Always kill app when M_E_S is denied
StorageManagerService gets notified that MANAGE_EXTERNAL_STORAGE was denied from AppOpsService#setUidMode, which means that we can't get the package name. However, SMS only kills the app if it has the package name. This is unnecessary since we use ActivityManager#killUid. This change removes the conditions that package name should be provided in order for SMS to kill the app. Test: manual - check bug Fix: 160253075 Change-Id: I0a411cf5224714c09744ffd3ade14267024efb67
This commit is contained in:
@@ -4736,7 +4736,7 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
return true;
|
||||
}
|
||||
|
||||
private void killAppForOpChange(int code, int uid, String packageName) {
|
||||
private void killAppForOpChange(int code, int uid) {
|
||||
final IActivityManager am = ActivityManager.getService();
|
||||
try {
|
||||
am.killUid(UserHandle.getAppId(uid), UserHandle.USER_ALL,
|
||||
@@ -4753,7 +4753,7 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
switch(code) {
|
||||
case OP_REQUEST_INSTALL_PACKAGES:
|
||||
// Always kill regardless of op change, to remount apps /storage
|
||||
killAppForOpChange(code, uid, packageName);
|
||||
killAppForOpChange(code, uid);
|
||||
return;
|
||||
case OP_MANAGE_EXTERNAL_STORAGE:
|
||||
if (mode != MODE_ALLOWED) {
|
||||
@@ -4762,12 +4762,7 @@ 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.
|
||||
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.
|
||||
}
|
||||
killAppForOpChange(code, uid);
|
||||
}
|
||||
return;
|
||||
case OP_LEGACY_STORAGE:
|
||||
|
||||
Reference in New Issue
Block a user