如题,我想获得phone进程的id,不知道该怎么做。

解决方案 »

  1.   

    试一试这个  public int getProcessPid() {
          ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
          List<RunningAppProcessInfo>   procList = null;
          int result=-1;
          
          procList = activityManager.getRunningAppProcesses();
          for (Iterator<RunningAppProcessInfo> iterator = procList.iterator(); iterator.hasNext();) 
           {
            RunningAppProcessInfo procInfo = iterator.next();
            System.out.println("proc_name:"+procInfo.processName);
            System.out.println("proc_id:"+procInfo.pid);
            if(procInfo.processName.equals("com.android.phone"))
             {  
              result=procInfo.pid;
              break;
             } 
          }
         return result;
      }
      

  2.   


    对了,如果我想kill 掉 phone的话,该怎么做呢?
      

  3.   

    这里有几种方法
    http://www.cnblogs.com/crazypebble/archive/2011/04/08/2006213.html
      

  4.   


    我试了两种方法:ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    List<RunningAppProcessInfo>   procList = null;
    int result=-1;
    procList = activityManager.getRunningAppProcesses();
    for (Iterator<RunningAppProcessInfo> iterator = procList.iterator(); iterator.hasNext();) {
      RunningAppProcessInfo procInfo = iterator.next();
      if(procInfo.processName.equals("com.android.phone")) {  
        try {
          //activityManager.restartPackage(procInfo.processName);
          activityManager.killBackgroundProcesses(procInfo.processName);
        } catch (Exception e){
        }
        break;
      }
    }
    以及try {
      java.lang.Process process = Runtime.getRuntime().exec("kill -9 " + phoneId);
      // Waits for the command to finish.
      process.waitFor();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (InterruptedException e) {
      throw new RuntimeException(e);
    }
    两种方法都没能成功的kill 掉 phone。 请帮我看看是什么原因呢?