下面代碼是根據進程id獲取進程名字:
1 /** 2 * 根據Pid獲取當前進程的名字,一般就是當前app的包名 3 * 4 * @param context 上下文 5 * @param pid 進程的id 6 * @return 返回進程的名字 7 */ 8 private String getAppName(Context context, int pid) 9 { 10 ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 11 List list = activityManager.getRunningAppProcesses(); 12 Iterator i = list.iterator(); 13 while (i.hasNext()) 14 { 15 ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next()); 16 try 17 { 18 if (info.pid == pid) 19 { 20 // 根據進程的信息獲取當前進程的名字 21 return info.processName; 22 } 23 } 24 catch (Exception e) 25 { 26 e.printStackTrace(); 27 } 28 } 29 // 沒有匹配的項,返回為null 30 return null; 31 }
代碼調用:
1 // 獲取當前進程 id 並取得進程名 2 int pid = android.os.Process.myPid(); 3 String processAppName = getAppName(context,pid);
上面代碼是網上找到的代碼,由於我只需要獲取當前進程的名字,所以我修改了一下:
1 /** 2 * 獲取當前進程的名字,一般就是當前app的包名 3 * 4 * @param context 當前上下文 5 * @return 返回進程的名字 6 */ 7 public static String getAppName(Context context) 8 { 9 int pid = android.os.Process.myPid(); // Returns the identifier of this process 10 ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 11 List list = activityManager.getRunningAppProcesses(); 12 Iterator i = list.iterator(); 13 while (i.hasNext()) 14 { 15 ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next()); 16 try 17 { 18 if (info.pid == pid) 19 { 20 // 根據進程的信息獲取當前進程的名字 21 return info.processName; 22 } 23 } 24 catch (Exception e) 25 { 26 e.printStackTrace(); 27 } 28 } 29 // 沒有匹配的項,返回為null 30 return null; 31 }