But aren't permissions checked for PID/UID pair... that must mean that an application is uniquely identified by the PID/UID pair. How come there's no efficient way of finding out the package name (or application) with a given pid/uid pair then?
On Feb 25, 7:47 am, Dianne Hackborn <[email protected]> wrote: > Fwiw, this is soooooooo not something you should do in a normal app. Going > it getting a list of running apps, arbitrarily bounded to 100, is a big clue > of this. > > And in general, there is no one single package name associated with a pid. > You really shouldn't be dealing with pids; the identity of most everything > is based on its uid, and the pid is fairly irrelevent. (Not that a uid > necessarily has a single package name associated with it either.) > > > > On Tue, Feb 24, 2009 at 3:41 PM, sm1 <[email protected]> wrote: > > > In free app *Device Internals for r1*, I get the running services this > > way: > > > StringBuffer getRunningServices(ActivityManager am){ > > StringBuffer buf = new StringBuffer(); > > buf.append("\n\nRunning Services:"); > > List<ActivityManager.RunningServiceInfo> list = null; > > try{ > > list = am.getRunningServices(100); > > }catch(Throwable ex){ > > buf.append("\n "+ex); > > return buf; > > } > > if(list.isEmpty()){ > > buf.append(" None listed."); > > return buf; > > } > > int i = 1; > > for(ActivityManager.RunningServiceInfo info: list){ > > buf.append("\n ["+i+"] pid {"+info.pid+"}:"); > > buf.append("\n foreground {"+info.foreground+"}"); > > buf.append("\n active since {"+info.activeSince+"} millis = > > "+millisToSignHhMmSs(info.activeSince)+" "+HMS); > > buf.append("\n last activity time {"+info.lastActivityTime+"} > > millis = "+millisToSignHhMmSs(info.lastActivityTime)+" "+HMS); > > buf.append("\n client count {"+info.clientCount+"}"); > > buf.append("\n crash count {"+info.crashCount+"}"); > > buf.append("\n service class {"+info.service.getClassName() > > +"}"); > > buf.append("\n process {"+info.process+"}"); > > if(info.restarting==0){ > > buf.append("\n restarting at {"+info.restarting+"} zero means > > not scheduled to restart"); > > }else{ > > buf.append("\n restarting at {"+info.restarting+"} millis = > > "+millisToSignHhMmSs(info.restarting)+" "+HMS); > > } > > buf.append("\n started {"+info.started+"}"); > > //buf.append("\n toString {"+info.toString()+"}"); > > ++i; > > } > > return buf; > > } > > > And this will get you one process name if you know the Pid: > > > /** @return null when givenPid not found in list of 100 first > > services. */ > > String getProcessNameFromPid(int givenPid){ > > ActivityManager am = (ActivityManager) getSystemService > > (Context.ACTIVITY_SERVICE); > > List<ActivityManager.RunningServiceInfo> list = > > am.getRunningServices(100); > > for(ActivityManager.RunningServiceInfo info: list){ > > if(info.pid == givenPid){ > > return info.process; > > } > > } > > return null; > > } > > > cheers, > > serge > > > On Feb 24, 4:23 am, sohail khan <[email protected]> wrote: > > > Hi all, > > > > How do I get the Package Name if I am having the PID of the process. For > > > example, if I want to output a list of currently > > > running processes, I can get the PIDs but how do I get the names of the > > > PIDs? > > > > Thanks. > > > -- > > > sohail > > -- > Dianne Hackborn > Android framework engineer > [email protected] > > Note: please don't send private questions to me, as I don't have time to > provide private support. All such questions should be posted on public > forums, where I and others can see and answer them. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

