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

Commit 9a943b8e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Handle multiple Activities matching eSOS intent" into sc-dev am: 9d814451

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13841205

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I5f181ea8395043cf76629d4e885a652616da939e
parents 539f5778 9d814451
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -580,6 +580,9 @@
    <!-- Whether wallet view is shown in landscape / seascape orientations -->
    <bool name="global_actions_show_landscape_wallet_view">false</bool>

    <!-- Package name of the preferred system app to perform eSOS action -->
    <string name="config_preferredEmergencySosPackage" translatable="false"></string>

    <!-- Whether to use the split 2-column notification shade -->
    <bool name="config_use_split_notification_shade">false</bool>

+32 −1
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ import android.provider.Settings;
import android.service.dreams.DreamService;
import android.service.dreams.IDreamManager;
import android.service.notification.StatusBarNotification;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.DisplayMetrics;
import android.util.EventLog;
@@ -4073,7 +4074,9 @@ public class StatusBar extends SystemUI implements DemoMode,
    private @Nullable Intent getEmergencyActionIntent() {
        Intent emergencyIntent = new Intent(EmergencyGesture.ACTION_LAUNCH_EMERGENCY);
        PackageManager pm = mContext.getPackageManager();
        ResolveInfo resolveInfo = pm.resolveActivity(emergencyIntent, /*flags=*/0);
        List<ResolveInfo> emergencyActivities = pm.queryIntentActivities(emergencyIntent,
                PackageManager.MATCH_SYSTEM_ONLY);
        ResolveInfo resolveInfo = getTopEmergencySosInfo(emergencyActivities);
        if (resolveInfo == null) {
            Log.wtf(TAG, "Couldn't find an app to process the emergency intent.");
            return null;
@@ -4084,6 +4087,34 @@ public class StatusBar extends SystemUI implements DemoMode,
        return emergencyIntent;
    }

    /**
     * Select and return the "best" ResolveInfo for Emergency SOS Activity.
     */
    private @Nullable ResolveInfo getTopEmergencySosInfo(List<ResolveInfo> emergencyActivities) {
        // No matched activity.
        if (emergencyActivities == null || emergencyActivities.isEmpty()) {
            return null;
        }

        // Of multiple matched Activities, give preference to the pre-set package name.
        String preferredAppPackageName =
                mContext.getString(R.string.config_preferredEmergencySosPackage);

        // If there is no preferred app, then return first match.
        if (TextUtils.isEmpty(preferredAppPackageName)) {
            return emergencyActivities.get(0);
        }

        for (ResolveInfo emergencyInfo: emergencyActivities) {
            // If activity is from the preferred app, use it.
            if (TextUtils.equals(emergencyInfo.activityInfo.packageName, preferredAppPackageName)) {
                return emergencyInfo;
            }
        }
        // No matching activity: return first match
        return emergencyActivities.get(0);
    }

    boolean isCameraAllowedByAdmin() {
        if (mDevicePolicyManager.getCameraDisabled(null,
                mLockscreenUserManager.getCurrentUserId())) {