2012-05-22 3 views
15

내 모든 설치된 앱의 아이콘을 가져오고 싶습니다. 패키지 관리자를 사용하여 해당 아이콘을 얻을 수 있습니까? 거기에 어떤 기능이 있습니까? 또는 설치된 모든 앱의 아이콘을 비트 맵으로 가져 오는 다른 방법은 없나요?android에 설치된 모든 앱의 아이콘을 가져옵니다.

감사합니다.

+0

Android 3.0부터 설명 된 방식으로는 더 큰 실행기 아이콘을 얻을 수 있습니다. 그렇다면 아래 질문에 대한 내 대답이 도움이 될 수 있습니다. http://stackoverflow.com/questions/4600740/getting-app-icon-in-android/16279240#16279240 –

답변

29

자세한 내용은 here을 확인하십시오. 라는 클래스 PackageInformation 확인 :

+0

완벽한 대답. 나는 당신에게 @Ponmalar를 upvoted –

3

이 방법을 시도하여 작업 활동 클래스에서 정보에 액세스하기 위해 지금이 떨어진 곳

public class PackageInformation { 

    private Context mContext; 

    public PackageInformation(Context context) { 
     mContext = context; 
    } 

    class InfoObject { 
     public String appname = ""; 
     public String pname = ""; 
     public String versionName = ""; 
     public int versionCode = 0; 
     public Drawable icon; 


     public void InfoObjectAggregatePrint() { //not used yet 
      Log.v(appname, appname + "\t" + pname + "\t" + versionName + "\t" + versionCode); 
     } 

    } 

    private ArrayList <InfoObject> getPackages() { 
     ArrayList <InfoObject> apps = getInstalledApps(false); 
     final int max = apps.size(); 
     for (int i = 0; i < max; i++) { 
      apps.get(i).prettyPrint(); 
     } 
     return apps; 
    } 

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

} 

턱을이 작업을 수행합니다

PackageInformation androidPackagesInfo = new PackageInformation(this); 
ArrayList <InfoObject> appsData = androidPackagesInfo.getInstalledApps(true); 

for (InfoObject info: appsData) { 
    Toast.makeText(MainActivity.this, info.appname, 2).show(); 
    Drawable somedrawable = info.icon; 

} 
3

내가 그것을 찾을 가장 쉬운 방법 :

private List<ResolveInfo> installedApps() { 
    final Intent main_intent = new Intent(Intent.ACTION_MAIN, null); 
    main_intent.addCategory(Intent.CATEGORY_LAUNCHER); 
    return package_manager.queryIntentActivities(main_intent, 0); 
} 

이제 아이콘을 얻으려면 다음을 사용하십시오.

for(ResolveInfo ri : installedApps()) { 
    // to get drawable icon --> ri.loadIcon(package_manager) 
} 
관련 문제