summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2012-10-10 14:29:08 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-10-10 14:29:08 -0700
commit33080be20a58d340f860feed444167edb527d689 (patch)
tree39a92a4ce0d5e0d0e314deecf4408461c63dca37
parent289a3396291f05d8ffb6adeabbf935d9e75203b1 (diff)
parent7cb4780870fe72882c9b37e91d1b812f16998b3d (diff)
downloadpackages_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.java27
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