Merge "Don't attach PendingIntent if settings app is hidden." into rvc-dev
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)
|
||||
|
||||
@@ -56,8 +56,11 @@ 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).
|
||||
assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage()));
|
||||
// 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
|
||||
@@ -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).
|
||||
assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage()));
|
||||
// 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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user