我正在構建一個android應用程序,我需要顯示當前正在運行的應用程序的列表,但它包含所有進程,包括許多系統或android的defualt進程:launcher,dailer等任何方式來檢查正在運行的進程是否是android中的系統進程
現在有什麼辦法來檢查當前正在運行的進程是不是Android的系統進程(默認進程)。
非常感謝。
我正在構建一個android應用程序,我需要顯示當前正在運行的應用程序的列表,但它包含所有進程,包括許多系統或android的defualt進程:launcher,dailer等任何方式來檢查正在運行的進程是否是android中的系統進程
現在有什麼辦法來檢查當前正在運行的進程是不是Android的系統進程(默認進程)。
非常感謝。
根據此documentation,似乎您可以使用FLAG_SYSTEM_PROCESS來標識進程是否是系統進程。這裏是關於this的SO討論。
感謝您的回覆。但我認爲FLAG_SYSTEM_PROCESS適用於RunningService而不適用於RunningProcess。我需要檢查Currently RunningProcess。 –
您可以使用ActivtyManager獲取Android中所有正在運行的進程的列表。請參閱下面的鏈接以獲取更多信息Android process killer。
這不是我想要的。我已經有正在運行的進程列表,但我想檢查是否有任何一個它們是Android的系統進程... –
這裏是我的代碼: 首先獲得運行應用程序的列表,請執行下列操作
public void RunningApps() {
final PackageManager pm = getPackageManager();
//Get the Activity Manager Object
ActivityManager aManager =
(ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
//Get the list of running Applications
List<ActivityManager.RunningAppProcessInfo> rapInfoList =
aManager.getRunningAppProcesses();
//Iterate all running apps to get their details
for (ActivityManager.RunningAppProcessInfo rapInfo : rapInfoList) {
//error getting package name for this process so move on
if (rapInfo.pkgList.length == 0)
continue;
try {
PackageInfo pkgInfo = pm.getPackageInfo(rapInfo.pkgList[0],
PackageManager.GET_ACTIVITIES);
if (isSystemPackage(pkgInfo)) {
//do something here
}
else {
//do something here
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Log.d(TAG, "NameNotFoundException :" + rapInfo.pkgList[0]);
}
}
}
的實際功能檢查正在運行的應用程序是系統的應用程序,並在以前的方法使用下面給出
/**
* Return whether the given PackgeInfo represents a system package or not.
* User-installed packages (Market or otherwise) should not be denoted as
* system packages.
*
* @param pkgInfo The Package info object
* @return Boolean value indicating if the application is system app
*/
private boolean isSystemPackage(PackageInfo pkgInfo) {
return (pkgInfo.applicationInfo.flags &
ApplicationInfo.FLAG_SYSTEM) != 0;
}
我希望它有幫助。
該代碼的作品適合我! –
請檢查我的帖子,如果它是正確的,請將其標記爲正確答案。謝謝 –