2013-10-04 68 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對象獲取應用程序的啓動器名稱。 –

相關問題