Loading src/com/android/permissioncontroller/Constants.java +9 −1 Original line number Diff line number Diff line Loading @@ -162,10 +162,18 @@ public class Constants { public static final long INVALID_SESSION_ID = 0; /** * Key for NotificationManager.notify for the auto-granted permissions notification. * Key for NotificationManager.notify for auto-granted permissions notification, * when silently displayed to the user. */ public static final String ADMIN_AUTO_GRANTED_PERMISSIONS_NOTIFICATION_CHANNEL_ID = "auto granted permissions"; /** * Key for NotificationManager.notify the auto-granted permissions notification, * when alerting the user (with sound and vibration). */ public static final String ADMIN_AUTO_GRANTED_PERMISSIONS_ALERTING_NOTIFICATION_CHANNEL_ID = "alerting auto granted permissions"; /** * ID for notification of auto-granted permissions shown by * {@link com.android.permissioncontroller.permission.ui.AutoGrantPermissionsNotifier}. Loading src/com/android/permissioncontroller/permission/service/PermissionControllerServiceImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import com.android.permissioncontroller.permission.model.AppPermissions; import com.android.permissioncontroller.permission.model.Permission; import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo; import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo.PermGrantState; import com.android.permissioncontroller.permission.ui.AutoGrantPermissionsNotifier; import com.android.permissioncontroller.permission.utils.KotlinUtils; import com.android.permissioncontroller.permission.utils.Utils; Loading Loading @@ -564,6 +565,8 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL callerPkgInfo.applicationInfo.targetSdkVersion); AppPermissions app = new AppPermissions(this, pkgInfo, false, true, null); AutoGrantPermissionsNotifier autoGrantPermissionsNotifier = new AutoGrantPermissionsNotifier(this, pkgInfo); int numPerms = expandedPermissions.size(); for (int i = 0; i < numPerms; i++) { Loading @@ -582,6 +585,7 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL case PERMISSION_GRANT_STATE_GRANTED: perm.setPolicyFixed(true); group.grantRuntimePermissions(false, new String[]{permName}); autoGrantPermissionsNotifier.onPermissionAutoGranted(permName); break; case PERMISSION_GRANT_STATE_DENIED: perm.setPolicyFixed(true); Loading @@ -597,6 +601,7 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL app.persistChanges(grantState == PERMISSION_GRANT_STATE_DENIED || !callerPackageName.equals(packageName)); autoGrantPermissionsNotifier.notifyOfAutoGrantPermissions(false); return true; } Loading src/com/android/permissioncontroller/permission/ui/AutoGrantPermissionsNotifier.java +21 −9 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import static android.graphics.Bitmap.Config.ARGB_8888; import static android.graphics.Bitmap.createBitmap; import static android.os.UserHandle.getUserHandleForUid; import static com.android.permissioncontroller.Constants.ADMIN_AUTO_GRANTED_PERMISSIONS_ALERTING_NOTIFICATION_CHANNEL_ID; import static com.android.permissioncontroller.Constants.ADMIN_AUTO_GRANTED_PERMISSIONS_NOTIFICATION_CHANNEL_ID; import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID; import static com.android.permissioncontroller.Constants.PERMISSION_GRANTED_BY_ADMIN_NOTIFICATION_ID; Loading Loading @@ -69,7 +70,7 @@ import java.util.ArrayList; * not only of location issues and use icons of the different groups associated with different * permissions. */ class AutoGrantPermissionsNotifier { public class AutoGrantPermissionsNotifier { /** * Set of permissions for which the user should be notified when the admin auto-grants one of * them. Loading @@ -92,7 +93,7 @@ class AutoGrantPermissionsNotifier { */ private final ArrayList<String> mGrantedPermissions = new ArrayList<>(); AutoGrantPermissionsNotifier(@NonNull Context context, public AutoGrantPermissionsNotifier(@NonNull Context context, @NonNull PackageInfo packageInfo) { mPackageInfo = packageInfo; UserHandle callingUser = getUserHandleForUid(mPackageInfo.applicationInfo.uid); Loading @@ -104,17 +105,20 @@ class AutoGrantPermissionsNotifier { * to. * * @param user The user for which the permission was auto-granted. * @param shouldAlertUser */ private void createAutoGrantNotifierChannel() { private void createAutoGrantNotifierChannel(boolean shouldNotifySilently) { NotificationManager notificationManager = getSystemServiceSafe(mContext, NotificationManager.class); NotificationChannel autoGrantedPermissionsChannel = new NotificationChannel( ADMIN_AUTO_GRANTED_PERMISSIONS_NOTIFICATION_CHANNEL_ID, getNotificationChannelId(shouldNotifySilently), mContext.getString(R.string.auto_granted_permissions), NotificationManager.IMPORTANCE_HIGH); if (shouldNotifySilently) { autoGrantedPermissionsChannel.enableVibration(false); autoGrantedPermissionsChannel.setSound(Uri.EMPTY, null); } notificationManager.createNotificationChannel(autoGrantedPermissionsChannel); } Loading @@ -123,12 +127,12 @@ class AutoGrantPermissionsNotifier { * * <p>NOTE: Right now this method only deals with location permissions. */ public void notifyOfAutoGrantPermissions() { public void notifyOfAutoGrantPermissions(boolean shouldNotifySilently) { if (mGrantedPermissions.isEmpty()) { return; } createAutoGrantNotifierChannel(); createAutoGrantNotifierChannel(shouldNotifySilently); PackageManager pm = mContext.getPackageManager(); CharSequence pkgLabel = pm.getApplicationLabel(mPackageInfo.applicationInfo); Loading @@ -143,7 +147,7 @@ class AutoGrantPermissionsNotifier { String messageText = mContext.getString(R.string.auto_granted_permission_notification_body, pkgLabel); Notification.Builder b = (new Notification.Builder(mContext, ADMIN_AUTO_GRANTED_PERMISSIONS_NOTIFICATION_CHANNEL_ID)).setContentTitle(title) getNotificationChannelId(shouldNotifySilently))).setContentTitle(title) .setContentText(messageText) .setStyle(new Notification.BigTextStyle().bigText(messageText).setBigContentTitle( title)) Loading Loading @@ -214,5 +218,13 @@ class AutoGrantPermissionsNotifier { pkgIcon.draw(canvas); return pkgIconBmp; } private String getNotificationChannelId(boolean shouldNotifySilently) { if (shouldNotifySilently) { return ADMIN_AUTO_GRANTED_PERMISSIONS_NOTIFICATION_CHANNEL_ID; } else { return ADMIN_AUTO_GRANTED_PERMISSIONS_ALERTING_NOTIFICATION_CHANNEL_ID; } } } src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -1093,7 +1093,7 @@ public class GrantPermissionsActivity extends Activity public void finish() { setResultIfNeeded(RESULT_CANCELED); if (mAutoGrantPermissionsNotifier != null) { mAutoGrantPermissionsNotifier.notifyOfAutoGrantPermissions(); mAutoGrantPermissionsNotifier.notifyOfAutoGrantPermissions(true); } super.finish(); } Loading Loading
src/com/android/permissioncontroller/Constants.java +9 −1 Original line number Diff line number Diff line Loading @@ -162,10 +162,18 @@ public class Constants { public static final long INVALID_SESSION_ID = 0; /** * Key for NotificationManager.notify for the auto-granted permissions notification. * Key for NotificationManager.notify for auto-granted permissions notification, * when silently displayed to the user. */ public static final String ADMIN_AUTO_GRANTED_PERMISSIONS_NOTIFICATION_CHANNEL_ID = "auto granted permissions"; /** * Key for NotificationManager.notify the auto-granted permissions notification, * when alerting the user (with sound and vibration). */ public static final String ADMIN_AUTO_GRANTED_PERMISSIONS_ALERTING_NOTIFICATION_CHANNEL_ID = "alerting auto granted permissions"; /** * ID for notification of auto-granted permissions shown by * {@link com.android.permissioncontroller.permission.ui.AutoGrantPermissionsNotifier}. Loading
src/com/android/permissioncontroller/permission/service/PermissionControllerServiceImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import com.android.permissioncontroller.permission.model.AppPermissions; import com.android.permissioncontroller.permission.model.Permission; import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo; import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo.PermGrantState; import com.android.permissioncontroller.permission.ui.AutoGrantPermissionsNotifier; import com.android.permissioncontroller.permission.utils.KotlinUtils; import com.android.permissioncontroller.permission.utils.Utils; Loading Loading @@ -564,6 +565,8 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL callerPkgInfo.applicationInfo.targetSdkVersion); AppPermissions app = new AppPermissions(this, pkgInfo, false, true, null); AutoGrantPermissionsNotifier autoGrantPermissionsNotifier = new AutoGrantPermissionsNotifier(this, pkgInfo); int numPerms = expandedPermissions.size(); for (int i = 0; i < numPerms; i++) { Loading @@ -582,6 +585,7 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL case PERMISSION_GRANT_STATE_GRANTED: perm.setPolicyFixed(true); group.grantRuntimePermissions(false, new String[]{permName}); autoGrantPermissionsNotifier.onPermissionAutoGranted(permName); break; case PERMISSION_GRANT_STATE_DENIED: perm.setPolicyFixed(true); Loading @@ -597,6 +601,7 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL app.persistChanges(grantState == PERMISSION_GRANT_STATE_DENIED || !callerPackageName.equals(packageName)); autoGrantPermissionsNotifier.notifyOfAutoGrantPermissions(false); return true; } Loading
src/com/android/permissioncontroller/permission/ui/AutoGrantPermissionsNotifier.java +21 −9 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import static android.graphics.Bitmap.Config.ARGB_8888; import static android.graphics.Bitmap.createBitmap; import static android.os.UserHandle.getUserHandleForUid; import static com.android.permissioncontroller.Constants.ADMIN_AUTO_GRANTED_PERMISSIONS_ALERTING_NOTIFICATION_CHANNEL_ID; import static com.android.permissioncontroller.Constants.ADMIN_AUTO_GRANTED_PERMISSIONS_NOTIFICATION_CHANNEL_ID; import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID; import static com.android.permissioncontroller.Constants.PERMISSION_GRANTED_BY_ADMIN_NOTIFICATION_ID; Loading Loading @@ -69,7 +70,7 @@ import java.util.ArrayList; * not only of location issues and use icons of the different groups associated with different * permissions. */ class AutoGrantPermissionsNotifier { public class AutoGrantPermissionsNotifier { /** * Set of permissions for which the user should be notified when the admin auto-grants one of * them. Loading @@ -92,7 +93,7 @@ class AutoGrantPermissionsNotifier { */ private final ArrayList<String> mGrantedPermissions = new ArrayList<>(); AutoGrantPermissionsNotifier(@NonNull Context context, public AutoGrantPermissionsNotifier(@NonNull Context context, @NonNull PackageInfo packageInfo) { mPackageInfo = packageInfo; UserHandle callingUser = getUserHandleForUid(mPackageInfo.applicationInfo.uid); Loading @@ -104,17 +105,20 @@ class AutoGrantPermissionsNotifier { * to. * * @param user The user for which the permission was auto-granted. * @param shouldAlertUser */ private void createAutoGrantNotifierChannel() { private void createAutoGrantNotifierChannel(boolean shouldNotifySilently) { NotificationManager notificationManager = getSystemServiceSafe(mContext, NotificationManager.class); NotificationChannel autoGrantedPermissionsChannel = new NotificationChannel( ADMIN_AUTO_GRANTED_PERMISSIONS_NOTIFICATION_CHANNEL_ID, getNotificationChannelId(shouldNotifySilently), mContext.getString(R.string.auto_granted_permissions), NotificationManager.IMPORTANCE_HIGH); if (shouldNotifySilently) { autoGrantedPermissionsChannel.enableVibration(false); autoGrantedPermissionsChannel.setSound(Uri.EMPTY, null); } notificationManager.createNotificationChannel(autoGrantedPermissionsChannel); } Loading @@ -123,12 +127,12 @@ class AutoGrantPermissionsNotifier { * * <p>NOTE: Right now this method only deals with location permissions. */ public void notifyOfAutoGrantPermissions() { public void notifyOfAutoGrantPermissions(boolean shouldNotifySilently) { if (mGrantedPermissions.isEmpty()) { return; } createAutoGrantNotifierChannel(); createAutoGrantNotifierChannel(shouldNotifySilently); PackageManager pm = mContext.getPackageManager(); CharSequence pkgLabel = pm.getApplicationLabel(mPackageInfo.applicationInfo); Loading @@ -143,7 +147,7 @@ class AutoGrantPermissionsNotifier { String messageText = mContext.getString(R.string.auto_granted_permission_notification_body, pkgLabel); Notification.Builder b = (new Notification.Builder(mContext, ADMIN_AUTO_GRANTED_PERMISSIONS_NOTIFICATION_CHANNEL_ID)).setContentTitle(title) getNotificationChannelId(shouldNotifySilently))).setContentTitle(title) .setContentText(messageText) .setStyle(new Notification.BigTextStyle().bigText(messageText).setBigContentTitle( title)) Loading Loading @@ -214,5 +218,13 @@ class AutoGrantPermissionsNotifier { pkgIcon.draw(canvas); return pkgIconBmp; } private String getNotificationChannelId(boolean shouldNotifySilently) { if (shouldNotifySilently) { return ADMIN_AUTO_GRANTED_PERMISSIONS_NOTIFICATION_CHANNEL_ID; } else { return ADMIN_AUTO_GRANTED_PERMISSIONS_ALERTING_NOTIFICATION_CHANNEL_ID; } } }
src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -1093,7 +1093,7 @@ public class GrantPermissionsActivity extends Activity public void finish() { setResultIfNeeded(RESULT_CANCELED); if (mAutoGrantPermissionsNotifier != null) { mAutoGrantPermissionsNotifier.notifyOfAutoGrantPermissions(); mAutoGrantPermissionsNotifier.notifyOfAutoGrantPermissions(true); } super.finish(); } Loading