Android 如何从运行AppProcessInfo获取PackageInfo
我有以下代码Android 如何从运行AppProcessInfo获取PackageInfo,android,performance,Android,Performance,我有以下代码 RunningAppProcessInfo p = (RunningAppProcessInfo)i.next(); PackageInfo pi; try { pi = pm.getPackageInfo(p.processName, 0); ... } catch (NameNotFoundException e) { e.printStackTrace();
RunningAppProcessInfo p = (RunningAppProcessInfo)i.next();
PackageInfo pi;
try {
pi = pm.getPackageInfo(p.processName, 0);
...
} catch (NameNotFoundException e) {
e.printStackTrace();
}
对于以下正在运行的应用程序,我获得nameNotFoundException。是否有其他方法获取packageInfo
06-16 17:09:56.809: system
06-16 17:09:56.809: android.process.media
06-16 17:09:56.809: com.google.process.location
06-16 17:09:56.819: com.google.android.apps.maps:LocationFriendService
06-16 17:09:56.819: android.process.acore
06-16 17:09:56.839: com.google.android.apps.maps:FriendService
我一直使用packagename,没有任何问题
String[] packages = runningappprocessinfo.pkgList;
String mypackage = packages[0];
如果您只有一个与应用程序关联的程序包名称(通常是这种情况),则可以从程序包[0]获取packagename。现在,您可以使用PackageManager获取软件包信息:
PackageManager pm = context.getPackageManager();
PackageInfo packageinfo = pm.getPackageInfo (mypackage, 0); // use appropriate flag
标志取决于要从PackageInfo检索的信息 String packageName=getApplicationContext().getPackageName();
ActivityManager ActivityManager=(ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_服务);
List appProcesses=activityManager.getRunningAppProcesses();
对于(ActivityManager.RunningAppProcessInfo appProcess:AppProcesss){
if(appProcess.processName.equals(packageName)&&appProcess.importance==ActivityManager.RunningAppProcessInfo.importance\u前台){
Log.i(“前台应用程序”,appProcess.processName);
}
}
sendNotifications(remoteMessage.getNotification().getBody());
String packageName = getApplicationContext().getPackageName();
ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService( Context.ACTIVITY_SERVICE );
List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
for(ActivityManager.RunningAppProcessInfo appProcess : appProcesses){
if( appProcess.processName.equals(packageName) && appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
Log.i("Foreground App", appProcess.processName);
}
}
sendNotifications(remoteMessage.getNotification().getBody());