根据这篇文章作的笔记
基于Android 12的force-stop流程分析_android forcestop-优快云博客
在AMS中,停止指定的应用是一个常用的功能,在代码里可以看到
@Override
6806 public void forceStopPackage(final String packageName, int userId) {
6807 if (checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES)
6808 != PackageManager.PERMISSION_GRANTED) {
6809 String msg = "Permission Denial: forceStopPackage() from pid="
6810 + Binder.getCallingPid()
6811 + ", uid=" + Binder.getCallingUid()
6812 + " requires " + android.Manifest.permission.FORCE_STOP_PACKAGES;
6813 Slog.w(TAG, msg);
6814 throw new SecurityException(msg);
6815 }
6816 final int callingPid = Binder.getCallingPid();
6817 userId = mUserController.handleIncomingUser(callingPid, Binder.getCallingUid(),
6818 userId, true, ALLOW_FULL_ONLY, "forceStopPackage", null);
6819 long callingId = Binder.clearCallingIdentity();
6820 try {
6821 IPackageManager pm = AppGlobals.getPackageManager();
6822 synchronized(this) {
6823 int[] users = userId == UserHandle.USER_ALL
6824 ? mUserController.getUsers() : new int[] { userId };
6825 for (int user : users) {
6826 if (getPackageManagerInternalLocked().isPackageStateProtected(
6827 packageName, user)) {
6828 Slog.w(TAG, "Ignoring request to force stop protected package "
6829 +

最低0.47元/天 解锁文章
1725

被折叠的 条评论
为什么被折叠?



