diff options
author | Jeff Sharkey <jsharkey@android.com> | 2012-10-10 14:29:08 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-10 14:29:08 -0700 |
commit | 33080be20a58d340f860feed444167edb527d689 (patch) | |
tree | 39a92a4ce0d5e0d0e314deecf4408461c63dca37 | |
parent | 289a3396291f05d8ffb6adeabbf935d9e75203b1 (diff) | |
parent | 7cb4780870fe72882c9b37e91d1b812f16998b3d (diff) | |
download | packages_apps_settings-33080be20a58d340f860feed444167edb527d689.zip packages_apps_settings-33080be20a58d340f860feed444167edb527d689.tar.gz packages_apps_settings-33080be20a58d340f860feed444167edb527d689.tar.bz2 |
Merge "Use user-specific PackageManager." into jb-mr1-dev
-rw-r--r-- | src/com/android/settings/applications/RunningState.java | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/com/android/settings/applications/RunningState.java b/src/com/android/settings/applications/RunningState.java index e4d34f7..9f92b0a 100644 --- a/src/com/android/settings/applications/RunningState.java +++ b/src/com/android/settings/applications/RunningState.java @@ -29,6 +29,7 @@ import android.content.pm.PackageItemInfo; import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.content.pm.UserInfo; +import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Handler; @@ -447,11 +448,10 @@ public class RunningState { } catch (PackageManager.NameNotFoundException e) { } } - - boolean updateService(Context context, - ActivityManager.RunningServiceInfo service) { - final PackageManager pm = context.getPackageManager(); - + + boolean updateService(Context userContext, ActivityManager.RunningServiceInfo service) { + final PackageManager pm = userContext.getPackageManager(); + boolean changed = false; ServiceItem si = mServices.get(service.service); if (si == null) { @@ -484,7 +484,7 @@ public class RunningState { try { Resources clientr = pm.getResourcesForApplication(service.clientPackage); String label = clientr.getString(service.clientLabel); - si.mDescription = context.getResources().getString( + si.mDescription = userContext.getResources().getString( R.string.service_client_name, label); } catch (PackageManager.NameNotFoundException e) { si.mDescription = null; @@ -494,7 +494,7 @@ public class RunningState { si.mShownAsStarted = true; changed = true; } - si.mDescription = context.getResources().getString( + si.mDescription = userContext.getResources().getString( R.string.service_started_by_app); } @@ -903,6 +903,15 @@ public class RunningState { for (int i=0; i<NS; i++) { ActivityManager.RunningServiceInfo si = services.get(i); + final Context userContext; + try { + userContext = context.createPackageContextAsUser( + "android", 0, new UserHandle(UserHandle.getUserId(si.uid))); + } catch (NameNotFoundException e) { + // Should always have "android" package + throw new RuntimeException(e); + } + // If this service's process is in use at a higher importance // due to another process bound to one of its services, then we // won't put it in the top-level list of services. Instead we @@ -944,7 +953,7 @@ public class RunningState { ProcessItem proc = procs.get(si.process); if (proc == null) { changed = true; - proc = new ProcessItem(context, si.uid, si.process); + proc = new ProcessItem(userContext, si.uid, si.process); procs.put(si.process, proc); } @@ -965,7 +974,7 @@ public class RunningState { proc.mDependentProcesses.clear(); proc.mCurSeq = mSequence; } - changed |= proc.updateService(context, si); + changed |= proc.updateService(userContext, si); } // Now update the map of other processes that are running (but |