Loading services/core/java/com/android/server/policy/PermissionPolicyService.java +13 −7 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,8 @@ import static android.app.AppOpsManager.MODE_ALLOWED; import static android.app.AppOpsManager.MODE_FOREGROUND; import static android.app.AppOpsManager.MODE_FOREGROUND; import static android.app.AppOpsManager.MODE_IGNORED; import static android.app.AppOpsManager.MODE_IGNORED; import static android.app.AppOpsManager.OP_NONE; import static android.app.AppOpsManager.OP_NONE; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION; import static android.content.pm.PackageManager.ACTION_REQUEST_PERMISSIONS; import static android.content.pm.PackageManager.ACTION_REQUEST_PERMISSIONS; import static android.content.pm.PackageManager.ACTION_REQUEST_PERMISSIONS_FOR_OTHER; import static android.content.pm.PackageManager.ACTION_REQUEST_PERMISSIONS_FOR_OTHER; import static android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION; import static android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION; Loading Loading @@ -1181,6 +1183,8 @@ public final class PermissionPolicyService extends SystemService { int taskId) { int taskId) { Intent grantPermission = mPackageManager Intent grantPermission = mPackageManager .buildRequestPermissionsIntent(new String[] { POST_NOTIFICATIONS }); .buildRequestPermissionsIntent(new String[] { POST_NOTIFICATIONS }); // Prevent the front-most activity entering pip due to overlay activity started on top. grantPermission.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_NO_USER_ACTION); grantPermission.setAction( grantPermission.setAction( ACTION_REQUEST_PERMISSIONS_FOR_OTHER); ACTION_REQUEST_PERMISSIONS_FOR_OTHER); grantPermission.putExtra(Intent.EXTRA_PACKAGE_NAME, pkgName); grantPermission.putExtra(Intent.EXTRA_PACKAGE_NAME, pkgName); Loading @@ -1188,13 +1192,15 @@ public final class PermissionPolicyService extends SystemService { ActivityOptions options = new ActivityOptions(new Bundle()); ActivityOptions options = new ActivityOptions(new Bundle()); options.setTaskOverlay(true, false); options.setTaskOverlay(true, false); options.setLaunchTaskId(taskId); options.setLaunchTaskId(taskId); mHandler.postDelayed(() -> { try { try { mHandler.postDelayed(() -> mContext.startActivityAsUser( mContext.startActivityAsUser( grantPermission, options.toBundle(), user), ACTIVITY_START_DELAY_MS); grantPermission, options.toBundle(), user); } catch (Exception e) { } catch (Exception e) { Log.e(LOG_TAG, "couldn't start grant permission dialog" Log.e(LOG_TAG, "couldn't start grant permission dialog" + "for other package " + pkgName, e); + "for other package " + pkgName, e); } } }, ACTIVITY_START_DELAY_MS); } } @Override @Override Loading Loading
services/core/java/com/android/server/policy/PermissionPolicyService.java +13 −7 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,8 @@ import static android.app.AppOpsManager.MODE_ALLOWED; import static android.app.AppOpsManager.MODE_FOREGROUND; import static android.app.AppOpsManager.MODE_FOREGROUND; import static android.app.AppOpsManager.MODE_IGNORED; import static android.app.AppOpsManager.MODE_IGNORED; import static android.app.AppOpsManager.OP_NONE; import static android.app.AppOpsManager.OP_NONE; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION; import static android.content.pm.PackageManager.ACTION_REQUEST_PERMISSIONS; import static android.content.pm.PackageManager.ACTION_REQUEST_PERMISSIONS; import static android.content.pm.PackageManager.ACTION_REQUEST_PERMISSIONS_FOR_OTHER; import static android.content.pm.PackageManager.ACTION_REQUEST_PERMISSIONS_FOR_OTHER; import static android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION; import static android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION; Loading Loading @@ -1181,6 +1183,8 @@ public final class PermissionPolicyService extends SystemService { int taskId) { int taskId) { Intent grantPermission = mPackageManager Intent grantPermission = mPackageManager .buildRequestPermissionsIntent(new String[] { POST_NOTIFICATIONS }); .buildRequestPermissionsIntent(new String[] { POST_NOTIFICATIONS }); // Prevent the front-most activity entering pip due to overlay activity started on top. grantPermission.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_NO_USER_ACTION); grantPermission.setAction( grantPermission.setAction( ACTION_REQUEST_PERMISSIONS_FOR_OTHER); ACTION_REQUEST_PERMISSIONS_FOR_OTHER); grantPermission.putExtra(Intent.EXTRA_PACKAGE_NAME, pkgName); grantPermission.putExtra(Intent.EXTRA_PACKAGE_NAME, pkgName); Loading @@ -1188,13 +1192,15 @@ public final class PermissionPolicyService extends SystemService { ActivityOptions options = new ActivityOptions(new Bundle()); ActivityOptions options = new ActivityOptions(new Bundle()); options.setTaskOverlay(true, false); options.setTaskOverlay(true, false); options.setLaunchTaskId(taskId); options.setLaunchTaskId(taskId); mHandler.postDelayed(() -> { try { try { mHandler.postDelayed(() -> mContext.startActivityAsUser( mContext.startActivityAsUser( grantPermission, options.toBundle(), user), ACTIVITY_START_DELAY_MS); grantPermission, options.toBundle(), user); } catch (Exception e) { } catch (Exception e) { Log.e(LOG_TAG, "couldn't start grant permission dialog" Log.e(LOG_TAG, "couldn't start grant permission dialog" + "for other package " + pkgName, e); + "for other package " + pkgName, e); } } }, ACTIVITY_START_DELAY_MS); } } @Override @Override Loading