2013-10-04 42 views
2

我必须从Android设备获取已安装的应用程序的列表。我能够得到名单。但是在获取来自PackageInfo对象的应用程序的启动器名称(其在清单中的启动器活动标签中定义而不是在应用程序标签中)时存在一些问题。如何从PackageInfo对象获取已安装应用程序的启动器名称。安装的应用程序的启动器名称

我试图以这种方式

packageInfo.applicationInfo.loadLabel(packageManager) 

但是,这是不是给发射名字。它正在给应用程序标记字符串。

回答

0

如果您想要处理启动程序的应用程序,那么您可以使用PackageManager查找处理意图过滤器Intent.CATEGORY_HOME的应用程序。

+0

我能够得到applications.But列表我的问题是摆脱PackageInfo对象应用程序的启动程序名称。 –

2

使用下面的代码来获取所有包的发射活动:

class PInfo { 
    private String appname = ""; 
    private String pname = ""; 
    private String versionName = ""; 
    private int versionCode = 0; 
    private Drawable icon; 
    private void prettyPrint() { 
     Log.v(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode); 
    } 
} 

private ArrayList<PInfo> getPackages() { 
    ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */ 
    final int max = apps.size(); 
    for (int i=0; i<max; i++) { 
     apps.get(i).prettyPrint(); 
    } 
    return apps; 
} 

private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) { 
    ArrayList<PInfo> res = new ArrayList<PInfo>();   
    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0); 
    for(int i=0;i<packs.size();i++) { 
     PackageInfo p = packs.get(i); 
     if ((!getSysPackages) && (p.versionName == null)) { 
      continue ; 
     } 
     PInfo newInfo = new PInfo(); 
     newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString(); 
     newInfo.pname = p.packageName; 
     newInfo.versionName = p.versionName; 
     newInfo.versionCode = p.versionCode; 
     newInfo.icon = p.applicationInfo.loadIcon(getPackageManager()); 
     res.add(newInfo); 
    } 
    return res; 
} 
+0

我收到的列表 列表 allPackagesList = packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS); –

+0

我想从PackageInfo对象中获取应用程序名称 –

+1

我能够获取应用程序列表。但我的问题是从PackageInfo对象获取应用程序的启动器名称。 –

相关问题