【问题标题】:Get All Activities by using package Name使用包名称获取所有活动
【发布时间】:2014-07-03 11:35:49
【问题描述】:

我想通过使用 PackageInfo 将 Application 中存在的所有活动作为列表获取。请告诉我有没有办法做到这一点。

提前致谢。

【问题讨论】:

  • 好的,试试这个对你有帮助。stackoverflow.com/questions/23669277/…
  • 这是我知道的,它用于获取所有应用程序列表。但我想获取应用程序中的所有活动名称
  • @Leena 你的意思是,你想从一个应用程序或所有已安装的应用程序中获取所有活动名称?
  • @Leena 看看我的回答,如果它对你有用的话
  • 好的,我知道了,请检查包管理器getPackageArchiveInfo(archiveFilePath, flags)的这个方法; ,在这里您可以检索有关在包存档文件中定义的应用程序包的整体信息。并设置标志 GET_ACTIVITIES。

标签: android package-managers android-package-managers


【解决方案1】:

我的问题的答案如下。

public static ArrayList<ActivityInfo> getAllRunningActivities(Context context) {
    try {
        PackageInfo pi = context.getPackageManager().getPackageInfo(
                context.getPackageName(), PackageManager.GET_ACTIVITIES);

        return new ArrayList<>(Arrays.asList(pi.activities));

    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
        return null;
    }
}

【讨论】:

  • 谢谢,请将其标记为答案。 :)
  • 我不会像“com.mobeta.android.demodslv”这样对包名称进行硬编码,而是使用Context.getPackageName() 使代码在项目之间可重用
【解决方案2】:

试试下面的代码:

final PackageManager pm = getPackageManager();

        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

        List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);
        Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));

        for (ResolveInfo temp : appList) {

            Log.v("my logs", "package and activity name = "
                    + temp.activityInfo.packageName + "    "
                    + temp.activityInfo.name);


        }

【讨论】:

  • 这列出了手机上已安装应用程序的所有主要活动
猜你喜欢
  • 2012-09-23
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 2020-01-13
相关资源
最近更新 更多