怎么获取系统内第三方应用的主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  这样获取一直是空指针

解决方案 »

  1.   

    PackageManager manager = getPackageManager();
    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      
      

  2.   


    主类怎么获取呢?
    如  com.test.MainActivity
      

  3.   


    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");
    }
    }
      

  4.   

    使用pm.getLaunchIntentForPackage(pi.packageName);
    这会给你launch intent,如果你打印它,你会在主活动中看见 launcher intent。
    如果你只想显示活动,可以在你的 device launcher 中启动,然后你需要给 Category Launcher设置一个filter 。