2012-11-02 2 views
1

Google Play 또는 모든 외부 저장소에서 설치했지만 사전 설치된 시스템 응용 프로그램이 아닌 응용 프로그램 목록을 원합니다. 이 코드는 나에게 또한 시스템 응용 프로그램의 정보를 제공안드로이드에 Google Play 스토어에서 설치된 애플리케이션 목록을 가져 오는 방법은 무엇입니까?

class PInfo { 
    private String appname = ""; 
    private String pname = ""; 
    private String versionName = ""; 
    private int versionCode = 0; 
    private Drawable icon; 
    private void prettyPrint() { 
     Log.v("", "*** appname = " + appname + " *** \n" + " packagename = " + pname + "\n" + " version name = " + versionName + "\n" + " version code = " + versionCode + " \n\n\n\n"); 
    } 
} 

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

private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) { 
    ArrayList<PInfo> res = new ArrayList<PInfo>();   
    List<PackageInfo> packs = getPackageManager().getInstalledPackages(PackageManager.GET_META_DATA); 
    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; 
} 

하지만 난 그냥 코드 아래 사용

..... .....

사람 만 제외하고 응용 프로그램을 설치하는 방법을 알 수 있습니다 설치된 시스템 응용 프로그램? 당신은 응용 프로그램에서 설치되어있는 경우 발견해야하는 경우

PackageManager pm = getPackageManager(); 
List<ApplicationInfo> installedApps = pm.getInstalledApplications(0); 

for (ApplicationInfo aInfo: installedApps) { 

    if ((aInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { 
     // system application 
    } else { 
     //user application 
    } 
} 

: 응용 프로그램이 다음과 같은 코드를 사용할 수있는 시스템 응용 프로그램 인 경우

덕분에 ....

답변

3

발견하려면 당신이 패키지 getInstallerPackageNamefollowing 방법을 사용해야하는 시장. 응용 프로그램을 설치 한 응용 프로그램의 packageName을 반환합니다.

0
public class AppList extends Activity { 
private ListView lView; 
private ArrayList results = new ArrayList(); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    lView = (ListView) findViewById(R.id.list1); 
    PackageManager pm = this.getPackageManager(); 

    Intent intent = new Intent(Intent.ACTION_MAIN, null); 
    intent.addCategory(Intent.CATEGORY_LAUNCHER); 

    List list = pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED); 
    for (ResolveInfo rInfo : list) { 
    results.add(rInfo.activityInfo.applicationInfo 
    .loadLabel(pm).toString()); 
    Log.w("Installed Applications", rInfo.activityInfo.applicationInfo 
    .loadLabel(pm).toString()); 
    } 
    lView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, results)); 
    } 
} 
+0

"(ResolveInfo rInfo : list)"의 줄에 "요소 유형 개체에서 ResolveInfo로 변환 할 수 없습니다"오류가 발생했습니다. – Jayesh

관련 문제