Loading core/java/android/debug/AdbNotifications.java +14 −5 Original line number Diff line number Diff line Loading @@ -17,11 +17,13 @@ package android.debug; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.os.UserHandle; import android.provider.Settings; Loading @@ -42,8 +44,9 @@ public final class AdbNotifications { * Builds a notification to show connected state for adb over a transport type. * @param context the context * @param transportType the adb transport type. * @return a newly created Notification for the transport type. * @return a newly created Notification for the transport type, or null on error. */ @Nullable public static Notification createNotification(@NonNull Context context, byte transportType) { Resources resources = context.getResources(); Loading @@ -66,10 +69,16 @@ public final class AdbNotifications { Intent intent = new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.setPackage(context.getPackageManager().resolveActivity(intent, PackageManager.MATCH_SYSTEM_ONLY).activityInfo.packageName); PendingIntent pIntent = PendingIntent.getActivityAsUser(context, 0, intent, ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent, PackageManager.MATCH_SYSTEM_ONLY); // Settings app may not be available (e.g. device policy manager removes it) PendingIntent pIntent = null; if (resolveInfo != null) { intent.setPackage(resolveInfo.activityInfo.packageName); pIntent = PendingIntent.getActivityAsUser(context, 0, intent, PendingIntent.FLAG_IMMUTABLE, null, UserHandle.CURRENT); } return new Notification.Builder(context, SystemNotificationChannels.DEVELOPER_IMPORTANT) .setSmallIcon(com.android.internal.R.drawable.stat_sys_adb) Loading core/tests/coretests/src/android/debug/AdbNotificationsTest.java +10 −4 Original line number Diff line number Diff line Loading @@ -56,9 +56,12 @@ public final class AdbNotificationsTest { // Verify that the adb notification for usb connections has the correct text. assertEquals(title, notification.extras.getCharSequence(Notification.EXTRA_TITLE, "")); assertEquals(message, notification.extras.getCharSequence(Notification.EXTRA_TEXT, "")); // Verify the PendingIntent has an explicit intent (b/153356209). // Verify the PendingIntent has an explicit intent (b/153356209), if there is a // PendingIntent attached. if (notification.contentIntent != null) { assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage())); } } @Test public void testCreateNotification_WifiTransportType() throws Exception { Loading @@ -73,7 +76,10 @@ public final class AdbNotificationsTest { // Verify that the adb notification for usb connections has the correct text. assertEquals(title, notification.extras.getCharSequence(Notification.EXTRA_TITLE, "")); assertEquals(message, notification.extras.getCharSequence(Notification.EXTRA_TEXT, "")); // Verify the PendingIntent has an explicit intent (b/153356209). // Verify the PendingIntent has an explicit intent (b/153356209), if there is a // PendingIntent attached. if (notification.contentIntent != null) { assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage())); } } } Loading
core/java/android/debug/AdbNotifications.java +14 −5 Original line number Diff line number Diff line Loading @@ -17,11 +17,13 @@ package android.debug; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.os.UserHandle; import android.provider.Settings; Loading @@ -42,8 +44,9 @@ public final class AdbNotifications { * Builds a notification to show connected state for adb over a transport type. * @param context the context * @param transportType the adb transport type. * @return a newly created Notification for the transport type. * @return a newly created Notification for the transport type, or null on error. */ @Nullable public static Notification createNotification(@NonNull Context context, byte transportType) { Resources resources = context.getResources(); Loading @@ -66,10 +69,16 @@ public final class AdbNotifications { Intent intent = new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.setPackage(context.getPackageManager().resolveActivity(intent, PackageManager.MATCH_SYSTEM_ONLY).activityInfo.packageName); PendingIntent pIntent = PendingIntent.getActivityAsUser(context, 0, intent, ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent, PackageManager.MATCH_SYSTEM_ONLY); // Settings app may not be available (e.g. device policy manager removes it) PendingIntent pIntent = null; if (resolveInfo != null) { intent.setPackage(resolveInfo.activityInfo.packageName); pIntent = PendingIntent.getActivityAsUser(context, 0, intent, PendingIntent.FLAG_IMMUTABLE, null, UserHandle.CURRENT); } return new Notification.Builder(context, SystemNotificationChannels.DEVELOPER_IMPORTANT) .setSmallIcon(com.android.internal.R.drawable.stat_sys_adb) Loading
core/tests/coretests/src/android/debug/AdbNotificationsTest.java +10 −4 Original line number Diff line number Diff line Loading @@ -56,9 +56,12 @@ public final class AdbNotificationsTest { // Verify that the adb notification for usb connections has the correct text. assertEquals(title, notification.extras.getCharSequence(Notification.EXTRA_TITLE, "")); assertEquals(message, notification.extras.getCharSequence(Notification.EXTRA_TEXT, "")); // Verify the PendingIntent has an explicit intent (b/153356209). // Verify the PendingIntent has an explicit intent (b/153356209), if there is a // PendingIntent attached. if (notification.contentIntent != null) { assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage())); } } @Test public void testCreateNotification_WifiTransportType() throws Exception { Loading @@ -73,7 +76,10 @@ public final class AdbNotificationsTest { // Verify that the adb notification for usb connections has the correct text. assertEquals(title, notification.extras.getCharSequence(Notification.EXTRA_TITLE, "")); assertEquals(message, notification.extras.getCharSequence(Notification.EXTRA_TEXT, "")); // Verify the PendingIntent has an explicit intent (b/153356209). // Verify the PendingIntent has an explicit intent (b/153356209), if there is a // PendingIntent attached. if (notification.contentIntent != null) { assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage())); } } }