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;
|
package android.debug;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
|
import android.annotation.Nullable;
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
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.
|
* Builds a notification to show connected state for adb over a transport type.
|
||||||
* @param context the context
|
* @param context the context
|
||||||
* @param transportType the adb transport type.
|
* @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,
|
public static Notification createNotification(@NonNull Context context,
|
||||||
byte transportType) {
|
byte transportType) {
|
||||||
Resources resources = context.getResources();
|
Resources resources = context.getResources();
|
||||||
@@ -66,10 +69,16 @@ public final class AdbNotifications {
|
|||||||
|
|
||||||
Intent intent = new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
|
Intent intent = new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||||
intent.setPackage(context.getPackageManager().resolveActivity(intent,
|
ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent,
|
||||||
PackageManager.MATCH_SYSTEM_ONLY).activityInfo.packageName);
|
PackageManager.MATCH_SYSTEM_ONLY);
|
||||||
PendingIntent pIntent = PendingIntent.getActivityAsUser(context, 0, intent,
|
// Settings app may not be available (e.g. device policy manager removes it)
|
||||||
PendingIntent.FLAG_IMMUTABLE, null, UserHandle.CURRENT);
|
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)
|
return new Notification.Builder(context, SystemNotificationChannels.DEVELOPER_IMPORTANT)
|
||||||
.setSmallIcon(com.android.internal.R.drawable.stat_sys_adb)
|
.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.
|
// Verify that the adb notification for usb connections has the correct text.
|
||||||
assertEquals(title, notification.extras.getCharSequence(Notification.EXTRA_TITLE, ""));
|
assertEquals(title, notification.extras.getCharSequence(Notification.EXTRA_TITLE, ""));
|
||||||
assertEquals(message, notification.extras.getCharSequence(Notification.EXTRA_TEXT, ""));
|
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
|
||||||
assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage()));
|
// PendingIntent attached.
|
||||||
|
if (notification.contentIntent != null) {
|
||||||
|
assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -73,7 +76,10 @@ public final class AdbNotificationsTest {
|
|||||||
// Verify that the adb notification for usb connections has the correct text.
|
// Verify that the adb notification for usb connections has the correct text.
|
||||||
assertEquals(title, notification.extras.getCharSequence(Notification.EXTRA_TITLE, ""));
|
assertEquals(title, notification.extras.getCharSequence(Notification.EXTRA_TITLE, ""));
|
||||||
assertEquals(message, notification.extras.getCharSequence(Notification.EXTRA_TEXT, ""));
|
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
|
||||||
assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage()));
|
// PendingIntent attached.
|
||||||
|
if (notification.contentIntent != null) {
|
||||||
|
assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user