diff options
| author | Joshua Duong <joshuaduong@google.com> | 2020-05-15 09:56:26 -0700 |
|---|---|---|
| committer | Joshua Duong <joshuaduong@google.com> | 2020-05-15 18:58:33 +0000 |
| commit | b381dfaf18e2f229a2da950fe54a3c2b088adfdc (patch) | |
| tree | 812d1889949f1e2707b4a8e230b67938c55fe383 /core/java | |
| parent | 0a1a911a5e2162f8d083508da0fd029cc40880c1 (diff) | |
Don't attach PendingIntent if settings app is hidden.
The settings app may not be available. In that case, just show the adb
notification without a PendingIntent.
Bug: 156453114
Test: atest AdbNotificationsTest
Test: With USB debugging enabled, install TestDPC, and use it to hide settings app.
Unplug and replug USB. USB debugging notification shows up and clicking
it does nothing.
Change-Id: Ie29d2c425c05bce9371600d76e4eb2eaba692fd7
Change-Id: Ie5f746cbc7b8a32fc280177bf281a9e973c8df12
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/debug/AdbNotifications.java | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/core/java/android/debug/AdbNotifications.java b/core/java/android/debug/AdbNotifications.java index fed5f5f9a0bf..9f1a5f80aa4d 100644 --- a/core/java/android/debug/AdbNotifications.java +++ b/core/java/android/debug/AdbNotifications.java @@ -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; @@ -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(); @@ -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, - PendingIntent.FLAG_IMMUTABLE, null, UserHandle.CURRENT); + 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) |
