怎么获取系统内第三方应用的主Activity呢?PackageManager pm= getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);
for (PackageInfo pi : packs) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("icon", pi.applicationInfo.loadIcon(pm));//图标
map.put("appName", pi.applicationInfo.loadLabel(pm));//应用名
map.put("packageName", pi.packageName);//包名
}
包名可以获取,但是不知道怎么获取主类名
pi.activities[0].name 这样获取一直是空指针
List<PackageInfo> packs = pm.getInstalledPackages(0);
for (PackageInfo pi : packs) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("icon", pi.applicationInfo.loadIcon(pm));//图标
map.put("appName", pi.applicationInfo.loadLabel(pm));//应用名
map.put("packageName", pi.packageName);//包名
}
包名可以获取,但是不知道怎么获取主类名
pi.activities[0].name 这样获取一直是空指针
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List<ResolveInfo> apps = manager.queryIntentActivities(mainIntent, 0);
Collections.sort(apps, new ResolveInfo.DisplayNameComparator(manager));找到所有的已安装程序,遍历出你想要的名字。 希望能够帮到你。 更多内容访问:http://www.drovik.com
主类怎么获取呢?
如 com.test.MainActivity
PackageManager manager = getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List<ResolveInfo> apps = manager.queryIntentActivities(mainIntent, 0);
for(ResolveInfo r:apps) {
ComponentInfo ci = r.activityInfo;
if("com.test.MainActivity".equalsIgnoreCase(ci.name)){
System.out.println("goto: http//www.drovik.com");
}
}
这会给你launch intent,如果你打印它,你会在主活动中看见 launcher intent。
如果你只想显示活动,可以在你的 device launcher 中启动,然后你需要给 Category Launcher设置一个filter 。