summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorJoshua Duong <joshuaduong@google.com>2020-05-15 09:56:26 -0700
committerJoshua Duong <joshuaduong@google.com>2020-05-15 18:58:33 +0000
commitb381dfaf18e2f229a2da950fe54a3c2b088adfdc (patch)
tree812d1889949f1e2707b4a8e230b67938c55fe383 /core/java
parent0a1a911a5e2162f8d083508da0fd029cc40880c1 (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.java19
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)