see2851
see2851

Reputation: 657

How to get app package name by pid?

String callerPackage = getAppNameByPID(getContext(), Binder.getCallingPid());
private String getAppNameByPID(Context context, int callingPid) {
//How ?
    ....

    }

my questions: How to get app package name by pid?

Upvotes: 1

Views: 6968

Answers (1)

Elhanan Mishraky
Elhanan Mishraky

Reputation: 2816

Each process can hold multiple packages, so it looks like:

private String[] getPackageNames(int pid)
{
    ActivityManager activityManager = (ActivityManager)getContext().getSystemService(Activity.ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses();
    for(RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) 
    {
        try 
        { 
            if(runningAppProcessInfo.pid == pid)
            {
                return runningAppProcessInfo.pkgList;
            }
        }
        catch(Exception e) 
        {
        }
    }
    return null;
}

Upvotes: 2

Related Questions