Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a88195b3 authored by Joshua Duong's avatar Joshua Duong Committed by Automerger Merge Worker
Browse files

Merge "Don't attach PendingIntent if settings app is hidden." into rvc-dev am:...

Merge "Don't attach PendingIntent if settings app is hidden." into rvc-dev am: 8ba34317 am: c28d70db

Change-Id: I76728c3958e3c38e8f5f4bf55e408c6335d8825a
parents 67b32170 c28d70db
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -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,
        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)
+10 −4
Original line number Diff line number Diff line
@@ -56,9 +56,12 @@ 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).
        // 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
    public void testCreateNotification_WifiTransportType() throws Exception {
@@ -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).
        // 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()));
        }
    }
}