0

我有以下代码

    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
4

2 回答 2

1

我一直使用包名没有问题。

String[] packages = runningappprocessinfo.pkgList;
String mypackage = packages[0];

如果您的应用程序只有一个包名(通常是这种情况),您可以从 packages[0] 获取包名。现在您可以使用 PackageManager 获取包信息:

PackageManager pm = context.getPackageManager();
PackageInfo packageinfo = pm.getPackageInfo (mypackage, 0); // use appropriate flag

标志取决于您要从 PackageInfo 检索的信息。文件

于 2013-06-16T12:47:25.973 回答
0
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());
于 2016-09-16T10:25:08.990 回答