From: Jorim Jaggi Date: Sun, 15 Jul 2018 12:24:38 +0000 (+0200) Subject: Repin home once setup is complete X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=0c84996a12ace0a81ecfeb5f3a79e55127a06af0;p=android-x86%2Fframeworks-base.git 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 --- diff --git a/services/core/java/com/android/server/PinnerService.java b/services/core/java/com/android/server/PinnerService.java index cec2028dddae..f5b29e9b76b8 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() {