Switch to IPackageManager.getServiceInfo().
Bug: 7095093 Change-Id: I79b9f077c9d69c5629b7dd0071a11ccda50839cd
This commit is contained in:
@@ -21,6 +21,7 @@ import com.android.settings.users.UserUtils;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityManagerNative;
|
||||
import android.app.ActivityThread;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
@@ -29,7 +30,6 @@ 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;
|
||||
@@ -449,8 +449,8 @@ public class RunningState {
|
||||
}
|
||||
}
|
||||
|
||||
boolean updateService(Context userContext, ActivityManager.RunningServiceInfo service) {
|
||||
final PackageManager pm = userContext.getPackageManager();
|
||||
boolean updateService(Context context, ActivityManager.RunningServiceInfo service) {
|
||||
final PackageManager pm = context.getPackageManager();
|
||||
|
||||
boolean changed = false;
|
||||
ServiceItem si = mServices.get(service.service);
|
||||
@@ -459,9 +459,10 @@ public class RunningState {
|
||||
si = new ServiceItem(mUserId);
|
||||
si.mRunningService = service;
|
||||
try {
|
||||
si.mServiceInfo = pm.getServiceInfo(service.service,
|
||||
PackageManager.GET_UNINSTALLED_PACKAGES);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
si.mServiceInfo = ActivityThread.getPackageManager().getServiceInfo(
|
||||
service.service, PackageManager.GET_UNINSTALLED_PACKAGES,
|
||||
UserHandle.getUserId(service.uid));
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
si.mDisplayLabel = makeLabel(pm,
|
||||
si.mRunningService.service.getClassName(), si.mServiceInfo);
|
||||
@@ -484,7 +485,7 @@ public class RunningState {
|
||||
try {
|
||||
Resources clientr = pm.getResourcesForApplication(service.clientPackage);
|
||||
String label = clientr.getString(service.clientLabel);
|
||||
si.mDescription = userContext.getResources().getString(
|
||||
si.mDescription = context.getResources().getString(
|
||||
R.string.service_client_name, label);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
si.mDescription = null;
|
||||
@@ -494,7 +495,7 @@ public class RunningState {
|
||||
si.mShownAsStarted = true;
|
||||
changed = true;
|
||||
}
|
||||
si.mDescription = userContext.getResources().getString(
|
||||
si.mDescription = context.getResources().getString(
|
||||
R.string.service_started_by_app);
|
||||
}
|
||||
|
||||
@@ -903,15 +904,6 @@ 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
|
||||
@@ -953,7 +945,7 @@ public class RunningState {
|
||||
ProcessItem proc = procs.get(si.process);
|
||||
if (proc == null) {
|
||||
changed = true;
|
||||
proc = new ProcessItem(userContext, si.uid, si.process);
|
||||
proc = new ProcessItem(context, si.uid, si.process);
|
||||
procs.put(si.process, proc);
|
||||
}
|
||||
|
||||
@@ -974,7 +966,7 @@ public class RunningState {
|
||||
proc.mDependentProcesses.clear();
|
||||
proc.mCurSeq = mSequence;
|
||||
}
|
||||
changed |= proc.updateService(userContext, si);
|
||||
changed |= proc.updateService(context, si);
|
||||
}
|
||||
|
||||
// Now update the map of other processes that are running (but
|
||||
|
Reference in New Issue
Block a user