Loading services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +29 −9 Original line number Diff line number Diff line Loading @@ -612,6 +612,16 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } } private void onSomePackagesChangedLocked() { final AccessibilityUserState userState = getCurrentUserStateLocked(); // Reload the installed services since some services may have different attributes // or resolve info (does not support equals), etc. Remove them then to force reload. userState.mInstalledServices.clear(); if (readConfigurationForUserStateLocked(userState)) { onUserStateChangedLocked(userState); } } private void registerBroadcastReceivers() { PackageMonitor monitor = new PackageMonitor() { @Override Loading @@ -627,15 +637,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub if (getChangingUserId() != mCurrentUserId) { return; } // We will update when the automation service dies. final AccessibilityUserState userState = getCurrentUserStateLocked(); // We have to reload the installed services since some services may // have different attributes, resolve info (does not support equals), // etc. Remove them then to force reload. userState.mInstalledServices.clear(); if (readConfigurationForUserStateLocked(userState)) { onUserStateChangedLocked(userState); } onSomePackagesChangedLocked(); } } Loading Loading @@ -767,6 +769,24 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub // package changes monitor.register(mContext, null, UserHandle.ALL, true); // Register an additional observer for new packages using PackageManagerInternal, which // generally notifies observers much sooner than the BroadcastReceiver-based PackageMonitor. final PackageManagerInternal pm = LocalServices.getService( PackageManagerInternal.class); if (pm != null) { pm.getPackageList(new PackageManagerInternal.PackageListObserver() { @Override public void onPackageAdded(String packageName, int uid) { final int userId = UserHandle.getUserId(uid); synchronized (mLock) { if (userId == mCurrentUserId) { onSomePackagesChangedLocked(); } } } }); } // user change and unlock IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_USER_SWITCHED); Loading Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +29 −9 Original line number Diff line number Diff line Loading @@ -612,6 +612,16 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } } private void onSomePackagesChangedLocked() { final AccessibilityUserState userState = getCurrentUserStateLocked(); // Reload the installed services since some services may have different attributes // or resolve info (does not support equals), etc. Remove them then to force reload. userState.mInstalledServices.clear(); if (readConfigurationForUserStateLocked(userState)) { onUserStateChangedLocked(userState); } } private void registerBroadcastReceivers() { PackageMonitor monitor = new PackageMonitor() { @Override Loading @@ -627,15 +637,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub if (getChangingUserId() != mCurrentUserId) { return; } // We will update when the automation service dies. final AccessibilityUserState userState = getCurrentUserStateLocked(); // We have to reload the installed services since some services may // have different attributes, resolve info (does not support equals), // etc. Remove them then to force reload. userState.mInstalledServices.clear(); if (readConfigurationForUserStateLocked(userState)) { onUserStateChangedLocked(userState); } onSomePackagesChangedLocked(); } } Loading Loading @@ -767,6 +769,24 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub // package changes monitor.register(mContext, null, UserHandle.ALL, true); // Register an additional observer for new packages using PackageManagerInternal, which // generally notifies observers much sooner than the BroadcastReceiver-based PackageMonitor. final PackageManagerInternal pm = LocalServices.getService( PackageManagerInternal.class); if (pm != null) { pm.getPackageList(new PackageManagerInternal.PackageListObserver() { @Override public void onPackageAdded(String packageName, int uid) { final int userId = UserHandle.getUserId(uid); synchronized (mLock) { if (userId == mCurrentUserId) { onSomePackagesChangedLocked(); } } } }); } // user change and unlock IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_USER_SWITCHED); Loading