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
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user