Merge "Use killUid instead of killApplication to kill app" into rvc-dev am: 7f5a592d65
Change-Id: I58ae6e8a9621d7b0f3519c8d51cab9574525259b
This commit is contained in:
@@ -61,6 +61,7 @@ import com.android.internal.util.ArrayUtils;
|
||||
import com.android.internal.util.FunctionalUtils.ThrowingRunnable;
|
||||
import com.android.internal.util.FunctionalUtils.ThrowingSupplier;
|
||||
import com.android.server.LocalServices;
|
||||
import com.android.server.pm.permission.PermissionManagerService;
|
||||
import com.android.server.wm.ActivityTaskManagerInternal;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -479,9 +480,11 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
|
||||
mInjector.getAppOpsManager()
|
||||
.setMode(OP_INTERACT_ACROSS_PROFILES, uid, packageName, newMode);
|
||||
}
|
||||
// Kill the UID before sending the broadcast to ensure that apps can be informed when
|
||||
// their app-op has been revoked.
|
||||
maybeKillUid(packageName, uid, hadPermission);
|
||||
sendCanInteractAcrossProfilesChangedBroadcast(packageName, uid, UserHandle.of(userId));
|
||||
maybeLogSetInteractAcrossProfilesAppOp(packageName, newMode, userId, logMetrics, uid);
|
||||
maybeKillUid(packageName, uid, hadPermission);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -496,7 +499,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
|
||||
if (hasInteractAcrossProfilesPermission(packageName, uid, PermissionChecker.PID_UNKNOWN)) {
|
||||
return;
|
||||
}
|
||||
mInjector.killUid(packageName, uid);
|
||||
mInjector.killUid(uid);
|
||||
}
|
||||
|
||||
private void maybeLogSetInteractAcrossProfilesAppOp(
|
||||
@@ -823,15 +826,11 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void killUid(String packageName, int uid) {
|
||||
try {
|
||||
ActivityManager.getService().killApplication(
|
||||
packageName,
|
||||
UserHandle.getAppId(uid),
|
||||
UserHandle.getUserId(uid),
|
||||
PermissionManager.KILL_APP_REASON_PERMISSIONS_REVOKED);
|
||||
} catch (RemoteException ignored) {
|
||||
}
|
||||
public void killUid(int uid) {
|
||||
PermissionManagerService.killUid(
|
||||
UserHandle.getAppId(uid),
|
||||
UserHandle.getUserId(uid),
|
||||
PermissionManager.KILL_APP_REASON_PERMISSIONS_REVOKED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -873,7 +872,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
|
||||
|
||||
int checkComponentPermission(String permission, int uid, int owningUid, boolean exported);
|
||||
|
||||
void killUid(String packageName, int uid);
|
||||
void killUid(int uid);
|
||||
}
|
||||
|
||||
class LocalService extends CrossProfileAppsInternal {
|
||||
|
||||
@@ -747,7 +747,7 @@ public class CrossProfileAppsServiceImplRoboTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void killUid(String packageName, int uid) {
|
||||
public void killUid(int uid) {
|
||||
mKilledUids.add(uid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ import android.content.pm.PermissionInfo;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.permission.PermissionManager;
|
||||
@@ -42,6 +41,7 @@ import android.util.SparseArray;
|
||||
import com.android.internal.util.FunctionalUtils.ThrowingRunnable;
|
||||
import com.android.internal.util.FunctionalUtils.ThrowingSupplier;
|
||||
import com.android.server.LocalServices;
|
||||
import com.android.server.pm.permission.PermissionManagerService;
|
||||
import com.android.server.wm.ActivityTaskManagerInternal;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -696,15 +696,11 @@ public class CrossProfileAppsServiceImplTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void killUid(String packageName, int uid) {
|
||||
try {
|
||||
ActivityManager.getService().killApplication(
|
||||
packageName,
|
||||
UserHandle.getAppId(uid),
|
||||
UserHandle.getUserId(uid),
|
||||
PermissionManager.KILL_APP_REASON_PERMISSIONS_REVOKED);
|
||||
} catch (RemoteException ignored) {
|
||||
}
|
||||
public void killUid(int uid) {
|
||||
PermissionManagerService.killUid(
|
||||
UserHandle.getAppId(uid),
|
||||
UserHandle.getUserId(uid),
|
||||
PermissionManager.KILL_APP_REASON_PERMISSIONS_REVOKED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user