From 6bb801ebb3483775e86dbcc1bcc621754f36e4fe Mon Sep 17 00:00:00 2001 From: Martijn Coenen Date: Thu, 4 Jun 2020 06:15:43 +0200 Subject: Use killUid() instead of killApplication(). killApplication() doesn't just kill the process, but also tears down its entire task stack, meaning it won't be restarted when that task becomes visible again. Use killUid() instead, which does have this property. Bug: 157674306 Test: manual verification Change-Id: I691d9fe96b64012c96e0595385bb482056b6c4d4 --- .../core/java/com/android/server/StorageManagerService.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index b5aec8e401eb..8eb401a7ee55 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -4657,9 +4657,8 @@ class StorageManagerService extends IStorageManager.Stub private void killAppForOpChange(int code, int uid, String packageName) { final IActivityManager am = ActivityManager.getService(); try { - am.killApplication(packageName, - UserHandle.getAppId(uid), - UserHandle.USER_ALL, AppOpsManager.opToName(code) + " changed."); + am.killUid(UserHandle.getAppId(uid), UserHandle.USER_ALL, + AppOpsManager.opToName(code) + " changed."); } catch (RemoteException e) { } } @@ -4681,7 +4680,12 @@ class StorageManagerService extends IStorageManager.Stub // results in a bad UX, especially since the gid only gives access // to unreliable volumes, USB OTGs that are rarely mounted. The app // will get the external_storage gid on next organic restart. - killAppForOpChange(code, uid, packageName); + if (packageName != null) { + killAppForOpChange(code, uid, packageName); + } else { + // TODO(b/158283222) this can happen, figure out if we need + // to kill in this case as well. + } } return; case OP_LEGACY_STORAGE: -- cgit v1.2.3-59-g8ed1b