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

Commit dc465ed7 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: 8ba34317

Change-Id: I1547a9976bcb91f25cca87c774a80b0442149e01
parents 19039164 8ba34317
Loading
Loading
Loading
Loading
+14 −5
Original line number Original line Diff line number Diff line
@@ -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 pIntent = null;
        if (resolveInfo != null) {
            intent.setPackage(resolveInfo.activityInfo.packageName);
            pIntent = PendingIntent.getActivityAsUser(context, 0, intent,
                    PendingIntent.FLAG_IMMUTABLE, null, UserHandle.CURRENT);
                    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)
+10 −4
Original line number Original line 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.
        // 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
        // PendingIntent attached.
        if (notification.contentIntent != null) {
            assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage()));
            assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage()));
        }
        }
    }


    @Test
    @Test
    public void testCreateNotification_WifiTransportType() throws Exception {
    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.
        // 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
        // PendingIntent attached.
        if (notification.contentIntent != null) {
            assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage()));
            assertFalse(TextUtils.isEmpty(notification.contentIntent.getIntent().getPackage()));
        }
        }
    }
    }
}