example :

    if(packageNames.length >1){
    int pid = Binder.getCallingPid();
    int uid = Binder.getCallingUid();
    ActivityManager am = (ActivityManager)mContext.getSystemService(mContext.ACTIVITY_SERVICE);
        List runningApps  = am.getRunningAppProcesses();
      if (runningApps != null && runningApps.size() > 0) {
        for (ActivityManager.RunningAppProcessInfo app : runningApps) {
        if(app.pid == pid && app.uid ==uid){
          packageNames[0] = app.processName;
        break;
     }
          }
      }
    }

 

网络上的案例:

 

String callerPackage = getAppNameByPID(getContext(), Binder.getCallingPid());

 

private String getAppName(int pID){    String processName = "";    ActivityManager am = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);    List l = am.getRunningAppProcesses();    Iterator i = l.iterator();    PackageManager pm = this.getPackageManager();    while(i.hasNext())     {          ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo)(i.next());          try           {               if(info.pid == pID)              {                  CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName, PackageManager.GET_META_DATA));                  //Log.d("Process", "Id: "+ info.pid +" ProcessName: "+ info.processName +"  Label: "+c.toString());                  //processName = c.toString();                  processName = info.processName;              }          }          catch(Exception e)           {                //Log.d("Process", "Error>> :"+ e.toString());          }   }    return processName;}

 

 

 

ActivityManagerService.java

    @Override
    public List getRunningExternalApplications() {
        enforceNotIsolatedCaller("getRunningExternalApplications");
        List runningApps = getRunningAppProcesses();
        List retList = new ArrayList();
        if (runningApps != null && runningApps.size() > 0) {
            Set extList = new HashSet();
            for (ActivityManager.RunningAppProcessInfo app : runningApps) {
                if (app.pkgList != null) {
                    for (String pkg : app.pkgList) {
                        extList.add(pkg);
                    }
                }
            }

}

 

 

 

更多相关文章

  1. android 判断是否有可用网络
  2. Android(安卓)Socket网络通信
  3. android 强制2G/3G或WIFI 优先上网
  4. Android(安卓)HttpClient网络通信
  5. Android(安卓)异步加载一张网络图片
  6. Android中判断app是否连接网络
  7. android 判断3G WIFI网络
  8. android监听网络变化
  9. Android(安卓)自定义带百分比的进度条

随机推荐

  1. android api Demo之自定义Animation,实现3
  2. Android之android exported="false"作用
  3. 《Android(安卓)智能穿戴设备开发-从入门
  4. android WebView总结
  5. 安卓开发中Spinner的基本用法(总结)
  6. 【Android进阶】android:configChanges属
  7. Android中的日历读写操作!!!
  8. Android安全机制详解
  9. Android(安卓)SDK目录结构介绍
  10. Android占领2010的六大理由