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 | |
| 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')
| -rw-r--r-- | core/java/android/app/ApplicationPackageManager.java | 13 | ||||
| -rw-r--r-- | core/java/android/content/pm/IPackageManager.aidl | 2 |
2 files changed, 8 insertions, 7 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") diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index d24bf6e..d6a78ea 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -130,8 +130,6 @@ interface IPackageManager { */ ParceledListSlice getInstalledPackages(int flags, in String lastRead, in int userId); - List<PackageInfo> getInstalledThemePackages(); - /** * This implements getInstalledApplications via a "last returned row" * mechanism that is not exposed in the API. This is to get around the IPC |
