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....