diff options
| author | Danny Baumann <dannybaumann@web.de> | 2013-06-13 10:55:37 +0200 |
|---|---|---|
| committer | Danny Baumann <dannybaumann@web.de> | 2013-06-13 10:55:37 +0200 |
| commit | cc89831d1f4e757d68981a8e69a9c8b8f6eec3bc (patch) | |
| tree | 2dd1db4f13b5fb5a255d2532065389f4f0eec052 /core/java/android/app/ApplicationPackageManager.java | |
| parent | c5c33031ad8a0b1fab388319f925155ce58528d4 (diff) | |
| download | frameworks_base-cc89831d1f4e757d68981a8e69a9c8b8f6eec3bc.zip frameworks_base-cc89831d1f4e757d68981a8e69a9c8b8f6eec3bc.tar.gz frameworks_base-cc89831d1f4e757d68981a8e69a9c8b8f6eec3bc.tar.bz2 | |
Fix theme provider crashing for non-primary user.
PackageManagerService's context is for user 0, so if the theme provider
for other users was invoking the getInstalledThemePackages() method, the
themes provider crashed as it doesn't have the INTERACT_ACROSS_USERS
permission.
Fix that (and simplify code) by making getInstalledThemePackages()
return the installed themes for the current user, which was probably the
intent anyway.
Change-Id: I02002cee005b74128f3b2f7cc7a93b9b8514f1f3
Diffstat (limited to 'core/java/android/app/ApplicationPackageManager.java')
| -rw-r--r-- | core/java/android/app/ApplicationPackageManager.java | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index b93771f..0d11e29 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -427,14 +427,17 @@ final class ApplicationPackageManager extends PackageManager { } } - @SuppressWarnings("unchecked") @Override public List<PackageInfo> getInstalledThemePackages() { - try { - return mPM.getInstalledThemePackages(); - } catch (RemoteException e) { - throw new RuntimeException("Package manager has died", e); + // Returns a list of theme APKs. + ArrayList<PackageInfo> finalList = new ArrayList<PackageInfo>(); + List<PackageInfo> installedPackagesList = getInstalledPackages(0); + for (PackageInfo pi : installedPackagesList) { + if (pi != null && pi.isThemeApk) { + finalList.add(pi); + } } + return finalList; } @SuppressWarnings("unchecked") |
