Add MANAGE_APP_HIBERNATION permission am: 152e389bae am: 0a4f736c02
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1646329 Change-Id: I4227b236b3569e0189381e08b1dee39513f0891f
This commit is contained in:
@@ -113,6 +113,7 @@ package android {
|
||||
field public static final String LOOP_RADIO = "android.permission.LOOP_RADIO";
|
||||
field public static final String MANAGE_ACCESSIBILITY = "android.permission.MANAGE_ACCESSIBILITY";
|
||||
field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
|
||||
field public static final String MANAGE_APP_HIBERNATION = "android.permission.MANAGE_APP_HIBERNATION";
|
||||
field public static final String MANAGE_APP_OPS_RESTRICTIONS = "android.permission.MANAGE_APP_OPS_RESTRICTIONS";
|
||||
field public static final String MANAGE_APP_PREDICTIONS = "android.permission.MANAGE_APP_PREDICTIONS";
|
||||
field public static final String MANAGE_APP_TOKENS = "android.permission.MANAGE_APP_TOKENS";
|
||||
@@ -1421,10 +1422,10 @@ package android.app.usage {
|
||||
package android.apphibernation {
|
||||
|
||||
public final class AppHibernationManager {
|
||||
method public boolean isHibernatingForUser(@NonNull String);
|
||||
method public boolean isHibernatingGlobally(@NonNull String);
|
||||
method public void setHibernatingForUser(@NonNull String, boolean);
|
||||
method public void setHibernatingGlobally(@NonNull String, boolean);
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_APP_HIBERNATION) public boolean isHibernatingForUser(@NonNull String);
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_APP_HIBERNATION) public boolean isHibernatingGlobally(@NonNull String);
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_APP_HIBERNATION) public void setHibernatingForUser(@NonNull String, boolean);
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_APP_HIBERNATION) public void setHibernatingGlobally(@NonNull String, boolean);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package android.apphibernation;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.RequiresPermission;
|
||||
import android.annotation.SystemApi;
|
||||
import android.annotation.SystemService;
|
||||
import android.content.Context;
|
||||
@@ -54,6 +55,7 @@ public final class AppHibernationManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(value = android.Manifest.permission.MANAGE_APP_HIBERNATION)
|
||||
public boolean isHibernatingForUser(@NonNull String packageName) {
|
||||
try {
|
||||
return mIAppHibernationService.isHibernatingForUser(packageName, mContext.getUserId());
|
||||
@@ -68,6 +70,7 @@ public final class AppHibernationManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(value = android.Manifest.permission.MANAGE_APP_HIBERNATION)
|
||||
public void setHibernatingForUser(@NonNull String packageName, boolean isHibernating) {
|
||||
try {
|
||||
mIAppHibernationService.setHibernatingForUser(packageName, mContext.getUserId(),
|
||||
@@ -83,6 +86,7 @@ public final class AppHibernationManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(value = android.Manifest.permission.MANAGE_APP_HIBERNATION)
|
||||
public boolean isHibernatingGlobally(@NonNull String packageName) {
|
||||
try {
|
||||
return mIAppHibernationService.isHibernatingGlobally(packageName);
|
||||
@@ -99,6 +103,7 @@ public final class AppHibernationManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(value = android.Manifest.permission.MANAGE_APP_HIBERNATION)
|
||||
public void setHibernatingGlobally(@NonNull String packageName, boolean isHibernating) {
|
||||
try {
|
||||
mIAppHibernationService.setHibernatingGlobally(packageName, isHibernating);
|
||||
|
||||
@@ -5180,6 +5180,10 @@
|
||||
<permission android:name="android.permission.INPUT_CONSUMER"
|
||||
android:protectionLevel="signature" />
|
||||
|
||||
<!-- @hide @SystemApi Allows an application to manage app hibernation state. -->
|
||||
<permission android:name="android.permission.MANAGE_APP_HIBERNATION"
|
||||
android:protectionLevel="signature|installer" />
|
||||
|
||||
<!-- Attribution for Country Detector. -->
|
||||
<attribution android:tag="CountryDetector" android:label="@string/country_detector"/>
|
||||
<!-- Attribution for Location service. -->
|
||||
|
||||
@@ -451,6 +451,7 @@ applications that come with the platform
|
||||
<permission name="android.permission.MANAGE_SOUND_TRIGGER" />
|
||||
<permission name="android.permission.CAPTURE_AUDIO_HOTWORD" />
|
||||
<permission name="android.permission.MODIFY_QUIET_MODE" />
|
||||
<permission name="android.permission.MANAGE_APP_HIBERNATION"/>
|
||||
</privapp-permissions>
|
||||
|
||||
<privapp-permissions package="com.android.statementservice">
|
||||
|
||||
@@ -367,6 +367,7 @@
|
||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
|
||||
<uses-permission android:name="android.permission.BIND_RESUME_ON_REBOOT_SERVICE" />
|
||||
<uses-permission android:name="android.permission.MANAGE_APP_HIBERNATION"/>
|
||||
|
||||
<application android:label="@string/app_label"
|
||||
android:theme="@android:style/Theme.DeviceDefault.DayNight"
|
||||
|
||||
@@ -173,7 +173,9 @@ public final class AppHibernationService extends SystemService {
|
||||
if (!checkHibernationEnabled("isHibernatingForUser")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
getContext().enforceCallingOrSelfPermission(
|
||||
android.Manifest.permission.MANAGE_APP_HIBERNATION,
|
||||
"Caller does not have MANAGE_APP_HIBERNATION permission.");
|
||||
userId = handleIncomingUser(userId, "isHibernating");
|
||||
if (!mUserManager.isUserUnlockingOrUnlocked(userId)) {
|
||||
Slog.e(TAG, "Attempt to get hibernation state of stopped or nonexistent user "
|
||||
@@ -202,6 +204,9 @@ public final class AppHibernationService extends SystemService {
|
||||
if (!checkHibernationEnabled("isHibernatingGlobally")) {
|
||||
return false;
|
||||
}
|
||||
getContext().enforceCallingOrSelfPermission(
|
||||
android.Manifest.permission.MANAGE_APP_HIBERNATION,
|
||||
"Caller does not have MANAGE_APP_HIBERNATION permission.");
|
||||
synchronized (mLock) {
|
||||
GlobalLevelState state = mGlobalHibernationStates.get(packageName);
|
||||
if (state == null) {
|
||||
@@ -223,6 +228,9 @@ public final class AppHibernationService extends SystemService {
|
||||
if (!checkHibernationEnabled("setHibernatingForUser")) {
|
||||
return;
|
||||
}
|
||||
getContext().enforceCallingOrSelfPermission(
|
||||
android.Manifest.permission.MANAGE_APP_HIBERNATION,
|
||||
"Caller does not have MANAGE_APP_HIBERNATION permission.");
|
||||
userId = handleIncomingUser(userId, "setHibernating");
|
||||
if (!mUserManager.isUserUnlockingOrUnlocked(userId)) {
|
||||
Slog.w(TAG, "Attempt to set hibernation state for a stopped or nonexistent user "
|
||||
@@ -263,6 +271,9 @@ public final class AppHibernationService extends SystemService {
|
||||
if (!checkHibernationEnabled("setHibernatingGlobally")) {
|
||||
return;
|
||||
}
|
||||
getContext().enforceCallingOrSelfPermission(
|
||||
android.Manifest.permission.MANAGE_APP_HIBERNATION,
|
||||
"Caller does not have MANAGE_APP_HIBERNATION permission.");
|
||||
synchronized (mLock) {
|
||||
GlobalLevelState state = mGlobalHibernationStates.get(packageName);
|
||||
if (state == null) {
|
||||
|
||||
Reference in New Issue
Block a user