From 0c84996a12ace0a81ecfeb5f3a79e55127a06af0 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Sun, 15 Jul 2018 14:24:38 +0200 Subject: [PATCH] Repin home once setup is complete On a fresh device, the home intent resovles to SetupWizard. After setup is complete, it will resolve to the regular home app. In order to accomodate for that, repin home app once user setup is complete. Test: Wipe device, complete SUW, inspect pinner Bug: 111132016 Change-Id: I904ecd2fed26bc1a3baf45c1b54da5fc6352d773 --- .../com/android/server/PinnerService.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/services/core/java/com/android/server/PinnerService.java b/services/core/java/com/android/server/PinnerService.java index cec2028dddae2..f5b29e9b76b89 100644 --- a/services/core/java/com/android/server/PinnerService.java +++ b/services/core/java/com/android/server/PinnerService.java @@ -34,6 +34,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.database.ContentObserver; import android.net.Uri; import android.os.Binder; import android.os.Build; @@ -43,6 +44,7 @@ import android.os.Message; import android.os.RemoteException; import android.os.UserHandle; import android.provider.MediaStore; +import android.provider.Settings; import android.system.ErrnoException; import android.system.Os; import android.system.OsConstants; @@ -166,7 +168,9 @@ public final class PinnerService extends SystemService { filter.addAction(Intent.ACTION_PACKAGE_REPLACED); filter.addDataScheme("package"); mContext.registerReceiver(mBroadcastReceiver, filter); + registerUidListener(); + registerUserSetupCompleteListener(); } @Override @@ -238,6 +242,26 @@ public final class PinnerService extends SystemService { } } + /** + * Registers a listener to repin the home app when user setup is complete, as the home intent + * initially resolves to setup wizard, but once setup is complete, it will resolve to the + * regular home app. + */ + private void registerUserSetupCompleteListener() { + Uri userSetupCompleteUri = Settings.Secure.getUriFor( + Settings.Secure.USER_SETUP_COMPLETE); + mContext.getContentResolver().registerContentObserver(userSetupCompleteUri, + false, new ContentObserver(null) { + @Override + public void onChange(boolean selfChange, Uri uri) { + if (userSetupCompleteUri.equals(uri)) { + sendPinAppMessage(KEY_HOME, ActivityManager.getCurrentUser(), + true /* force */); + } + } + }, UserHandle.USER_ALL); + } + private void registerUidListener() { try { mAm.registerUidObserver(new IUidObserver.Stub() {