作为android的开发者,获取后台运行APP应该就像是基本功一样。不过遇到这个需求,在网上搜了好长时间,试了各种方法,都没有达到要求。感觉网上的文章都是各种抄。
终于找到了处理办法,测试了之后,可以达到要求,特别记录下来!
/**
* 获取后台运行APP packageName
*
* @param context
*/
public static void getRunningApp(Context context) {
PackageManager localPackageManager = context.getPackageManager();
List localList = localPackageManager.getInstalledPackages(0);
for (int i =0; i < localList.size(); i++) {
PackageInfo localPackageInfo =(PackageInfo) localList.get(i);
String packageStr = localPackageInfo.packageName.split(":")[0];
if (((ApplicationInfo.FLAG_SYSTEM & localPackageInfo.applicationInfo.flags) ==0)
&&((ApplicationInfo.FLAG_UPDATED_SYSTEM_APP & localPackageInfo.applicationInfo.flags) ==0)
&&((ApplicationInfo.FLAG_STOPPED & localPackageInfo.applicationInfo.flags) ==0)) {
Log.e("TAG", packageStr);
}
}
}
当然还有点疑问,这个方法获取的是后台的APP,即是按菜单键后台可以看到的APP,但是有可能已被系统杀死。所以有更好的方法欢迎评论分享!