summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nancy Zheng <nzheng@google.com> 2017-01-23 21:17:15 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-01-23 21:17:19 +0000
commit8ac1bff7e23ac984568652e1c5e9ffc7dd47e341 (patch)
tree26b76bf41699a8c435aa441a3de95bdbb272c4f1
parente710a6fc6663048e0c3302c085a409aa1045a21a (diff)
parente256a18dcd8c0fda68abc5005c405eb8a5c18bea (diff)
Merge "Query for the settings package in KeyguardManager instead of hardcoding it." into cw-f-dev
-rw-r--r--core/java/android/app/KeyguardManager.java38
1 files changed, 22 insertions, 16 deletions
diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java
index b794f9cdbc79..1850cebf4f07 100644
--- a/core/java/android/app/KeyguardManager.java
+++ b/core/java/android/app/KeyguardManager.java
@@ -22,18 +22,19 @@ import android.app.trust.ITrustManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
-import android.content.pm.UserInfo;
+import android.content.pm.ResolveInfo;
import android.os.Binder;
-import android.os.RemoteException;
import android.os.IBinder;
import android.os.IUserManager;
+import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
-import android.os.UserManager;
-import android.view.IWindowManager;
import android.view.IOnKeyguardExitResult;
+import android.view.IWindowManager;
import android.view.WindowManagerGlobal;
+import java.util.List;
+
/**
* Class that can be used to lock and unlock the keyboard. Get an instance of this
* class by calling {@link android.content.Context#getSystemService(java.lang.String)}
@@ -88,12 +89,9 @@ public class KeyguardManager {
Intent intent = new Intent(ACTION_CONFIRM_DEVICE_CREDENTIAL);
intent.putExtra(EXTRA_TITLE, title);
intent.putExtra(EXTRA_DESCRIPTION, description);
- if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH)) {
- intent.setPackage("com.google.android.apps.wearable.settings");
- } else {
- // For security reasons, only allow this to come from system settings.
- intent.setPackage("com.android.settings");
- }
+
+ // explicitly set the package for security
+ intent.setPackage(getSettingsPackageForIntent(intent));
return intent;
}
@@ -114,15 +112,23 @@ public class KeyguardManager {
intent.putExtra(EXTRA_TITLE, title);
intent.putExtra(EXTRA_DESCRIPTION, description);
intent.putExtra(Intent.EXTRA_USER_ID, userId);
- if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH)) {
- intent.setPackage("com.google.android.apps.wearable.settings");
- } else {
- // For security reasons, only allow this to come from system settings.
- intent.setPackage("com.android.settings");
- }
+
+ // explicitly set the package for security
+ intent.setPackage(getSettingsPackageForIntent(intent));
+
return intent;
}
+ private String getSettingsPackageForIntent(Intent intent) {
+ List<ResolveInfo> resolveInfos = mContext.getPackageManager()
+ .queryIntentActivities(intent, PackageManager.MATCH_SYSTEM_ONLY);
+ for (int i = 0; i < resolveInfos.size(); i++) {
+ return resolveInfos.get(i).activityInfo.packageName;
+ }
+
+ return "com.android.settings";
+ }
+
/**
* @deprecated Use {@link android.view.WindowManager.LayoutParams#FLAG_DISMISS_KEYGUARD}
* and/or {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WHEN_LOCKED}