summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/am/ActivityStack.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/am/ActivityStack.java')
-rw-r--r--services/java/com/android/server/am/ActivityStack.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java
index 885ec89..4e9973f 100644
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/java/com/android/server/am/ActivityStack.java
@@ -1803,9 +1803,43 @@ final class ActivityStack {
startSpecificActivityLocked(next, true, true);
}
+ handlePrivacyGuardNotification(prev, next);
+
return true;
}
+ private final void handlePrivacyGuardNotification(ActivityRecord prev, ActivityRecord next) {
+ boolean curPrivacy = false;
+ boolean prevPrivacy = false;
+
+ if (next != null) {
+ try {
+ curPrivacy = AppGlobals.getPackageManager().getPrivacyGuardSetting(
+ next.packageName, next.userId);
+ } catch (RemoteException e) {
+ // nothing
+ }
+ }
+ if (prev != null) {
+ try {
+ prevPrivacy = AppGlobals.getPackageManager().getPrivacyGuardSetting(
+ prev.packageName, prev.userId);
+ } catch (RemoteException e) {
+ // nothing
+ }
+ }
+ if (prevPrivacy && !curPrivacy) {
+ Message msg = mService.mHandler.obtainMessage(
+ ActivityManagerService.CANCEL_PRIVACY_NOTIFICATION_MSG, prev.userId);
+ msg.sendToTarget();
+ } else if ((!prevPrivacy && curPrivacy) ||
+ (prevPrivacy && curPrivacy && !next.packageName.equals(prev.packageName))) {
+ Message msg = mService.mHandler.obtainMessage(
+ ActivityManagerService.POST_PRIVACY_NOTIFICATION_MSG, next);
+ msg.sendToTarget();
+ }
+ }
+
private final void startActivityLocked(ActivityRecord r, boolean newTask,
boolean doResume, boolean keepCurTransition, Bundle options) {
final int NH = mHistory.size();