From 43f166dfb439e7706b829a5e5a7cc910bb53dc8c Mon Sep 17 00:00:00 2001 From: Nancy Zheng Date: Fri, 18 Nov 2016 18:15:09 -0800 Subject: Fix createConfirmDeviceCredentialIntent for wear for CTS. Bug: 33000237 Change-Id: I1fdb5a518c41ab005f12d3142763e374b38d7553 --- core/java/android/app/KeyguardManager.java | 21 ++++++++++++++++----- core/java/android/app/SystemServiceRegistry.java | 6 +++--- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java index 391065787683..b794f9cdbc79 100644 --- a/core/java/android/app/KeyguardManager.java +++ b/core/java/android/app/KeyguardManager.java @@ -21,6 +21,7 @@ import android.annotation.RequiresPermission; 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.os.Binder; import android.os.RemoteException; @@ -44,6 +45,7 @@ public class KeyguardManager { private IWindowManager mWM; private ITrustManager mTrustManager; private IUserManager mUserManager; + private Context mContext; /** * Intent used to prompt user for device credentials. @@ -86,8 +88,12 @@ public class KeyguardManager { Intent intent = new Intent(ACTION_CONFIRM_DEVICE_CREDENTIAL); intent.putExtra(EXTRA_TITLE, title); intent.putExtra(EXTRA_DESCRIPTION, description); - // For security reasons, only allow this to come from system settings. - intent.setPackage("com.android.settings"); + 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"); + } return intent; } @@ -108,8 +114,12 @@ public class KeyguardManager { intent.putExtra(EXTRA_TITLE, title); intent.putExtra(EXTRA_DESCRIPTION, description); intent.putExtra(Intent.EXTRA_USER_ID, userId); - // For security reasons, only allow this to come from system settings. - intent.setPackage("com.android.settings"); + 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"); + } return intent; } @@ -191,7 +201,8 @@ public class KeyguardManager { } - KeyguardManager() { + KeyguardManager(Context context) { + mContext = context; mWM = WindowManagerGlobal.getWindowManagerService(); mTrustManager = ITrustManager.Stub.asInterface( ServiceManager.getService(Context.TRUST_SERVICE)); diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index 55744b935f51..4c9b9778d7b5 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -320,10 +320,10 @@ final class SystemServiceRegistry { }}); registerService(Context.KEYGUARD_SERVICE, KeyguardManager.class, - new StaticServiceFetcher() { + new CachedServiceFetcher() { @Override - public KeyguardManager createService() { - return new KeyguardManager(); + public KeyguardManager createService(ContextImpl ctx) { + return new KeyguardManager(ctx); }}); registerService(Context.LAYOUT_INFLATER_SERVICE, LayoutInflater.class, -- cgit v1.2.3-59-g8ed1b