summaryrefslogtreecommitdiff
path: root/SettingsAPI/java/com/android/tv/settings/library/device/apps/ForceStopPreferenceController.java
diff options
context:
space:
mode:
Diffstat (limited to 'SettingsAPI/java/com/android/tv/settings/library/device/apps/ForceStopPreferenceController.java')
-rw-r--r--SettingsAPI/java/com/android/tv/settings/library/device/apps/ForceStopPreferenceController.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/SettingsAPI/java/com/android/tv/settings/library/device/apps/ForceStopPreferenceController.java b/SettingsAPI/java/com/android/tv/settings/library/device/apps/ForceStopPreferenceController.java
index d310a676d..170736ed7 100644
--- a/SettingsAPI/java/com/android/tv/settings/library/device/apps/ForceStopPreferenceController.java
+++ b/SettingsAPI/java/com/android/tv/settings/library/device/apps/ForceStopPreferenceController.java
@@ -18,6 +18,7 @@ package com.android.tv.settings.library.device.apps;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
+import android.apphibernation.AppHibernationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -75,9 +76,16 @@ public class ForceStopPreferenceController extends AppActionPreferenceController
i.putExtra(EXTRA_GUIDANCE_BREADCRUMB, getAppName());
mPreferenceCompat.setIntent(i);
+ AppHibernationManager ahm = mContext.getSystemService(
+ AppHibernationManager.class);
+ boolean isPackageHibernated = ahm.isHibernatingForUser(mAppEntry.info.packageName);
+
if (dpm.packageHasActiveAdmins(mAppEntry.info.packageName)) {
// User can't force stop device admin.
mPreferenceCompat.setVisible(false);
+ } else if (isPackageHibernated) {
+ // Hibernated apps are always stopped.
+ mPreferenceCompat.setVisible(false);
} else if ((mAppEntry.info.flags & ApplicationInfo.FLAG_STOPPED) == 0) {
// If the app isn't explicitly stopped, then always show the
// force stop action.
@@ -89,12 +97,13 @@ public class ForceStopPreferenceController extends AppActionPreferenceController
mAppEntry.info.packageName});
intent.putExtra(Intent.EXTRA_UID, mAppEntry.info.uid);
intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(mAppEntry.info.uid));
- mContext.sendOrderedBroadcast(intent, null, new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- mPreferenceCompat.setVisible(getResultCode() != Activity.RESULT_CANCELED);
- }
- }, null, Activity.RESULT_CANCELED, null, null);
+ mContext.sendOrderedBroadcast(intent,
+ android.Manifest.permission.HANDLE_QUERY_PACKAGE_RESTART, new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ mPreferenceCompat.setVisible(getResultCode() != Activity.RESULT_CANCELED);
+ }
+ }, null, Activity.RESULT_CANCELED, null, null);
}
super.update();
}