Android 获取系统上所有可用活动的列表

Android 获取系统上所有可用活动的列表,android,android-activity,Android,Android Activity,因为系统应该知道可用的活动,因为它们在安装期间评估的相应AndroidManifest.xml文件中声明: 有办法查询这些活动吗?当然,请查看PackageManager.getInstalledPackages方法。以下是打印已注册活动名称的示例: List<PackageInfo> pInfos = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES); for (PackageInfo p

因为系统应该知道可用的活动,因为它们在安装期间评估的相应
AndroidManifest.xml
文件中声明:

有办法查询这些活动吗?

当然,请查看
PackageManager.getInstalledPackages
方法。以下是打印已注册活动名称的示例:

List<PackageInfo> pInfos = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);
for (PackageInfo pInfo : pInfos) {
  ActivityInfo[] aInfos = pInfo.activities;
  if (aInfos != null) {
    for (ActivityInfo activityInfo : aInfos) {
      Log.i("ACT", activityInfo.name);
      // do whatever else you like... 
    }
  }
}
List pInfos=getPackageManager().getInstalledPackages(PackageManager.GET_活动);
用于(PackageInfo pInfo:pInfos){
ActivityInfo[]aInfos=pInfo.activities;
如果(aInfos!=null){
对于(活动信息活动信息:aInfos){
Log.i(“ACT”,activityInfo.name);
//做任何你喜欢的事。。。
}
}
}

pm.getInstalledPackages(0)
-这将不起作用,因为您需要指定PackageManager应返回的信息类型(即PackageManager.GET_活动)。检查下面我的答案。顺便说一句,
android.permission.GET_TASKS
不需要枚举我没有它就可以处理的活动。我已经提到了PackageManager.GET_活动要添加为我用来获取设备中已安装应用程序列表的上述代码……你不需要
getApplicationContext()
——只需调用
getPackageManager()
ctx上的
ArrayList<PackageInfo> res = new ArrayList<PackageInfo>();
PackageManager pm = ctx.getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);

for(int i=0;i<packs.size();i++) {
    PackageInfo p = packs.get(i);
    String description = (String) p.applicationInfo.loadDescription(pm);
    String  label= p.applicationInfo.loadLabel(pm).toString();
    String packageName = p.packageName;
    String versionName = p.versionName;
    String versionCode = p.versionCode;
    String icon = p.applicationInfo.loadIcon(pm);
//Continue to extract other info about the app...
}
<uses-permission android:name="android.permission.GET_TASKS" />
PackageManager.getactivities -- I have not used this PackageManager.getactivities but I hope it will work for you....