2011-03-22 27 views
5

Bu, şu anda sahip olduğum bir kod ancak telefondaki tüm uygulamaların listesini alamıyorum. Benim yanlış yaptığımı gören var mı?Android telefonda yüklenen tüm uygulamalar nasıl alınır

public class GetAppList extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     try { 
      List<PackageInfo> appListInfo1 = this.getPackageManager() 
      .getInstalledPackages(0); 
      JSONArray ja = new JSONArray(); 
      try { 
       HttpClient httpclient = new DefaultHttpClient(); 
       Object sendDataUrl = null; 
       HttpPost request = new HttpPost(sendDataUrl.toString()); 
       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       ContextWrapper context = null; 
       PackageManager pm = context.getPackageManager(); 
       List<PackageInfo> appListInfo = pm.getInstalledPackages(0); 
       for (PackageInfo p : appListInfo) { 
        if (p.applicationInfo.uid > 10000) { 
         JSONObject jo = new JSONObject(); 
         jo.put("label", p.applicationInfo.loadLabel(pm).toString()); 
         jo.put("packageName", p.applicationInfo.packageName); 
         ja.put(jo); 
        } 
        System.out.print(ja); 
       }   
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
     finally { 
      // ... cleanup that will execute whether or not an error occurred ... 
     } 



}catch (Exception e) { 
    // TODO: handle exception 
} 
finally { 
    // ... cleanup that will execute whether or not an error occurred ... 
} 
    }} 

Kodu düzgün şekilde biçimlendirmek için bunu alamıyorum. Listenin uygulamalara kullanmak kod

cevap

3

Bu edilir: Daha sonra uygulamayı çalıştırmak istiyorsanız

PackageManager pm = this.getPackageManager(); 
Intent intent = new Intent(Intent.ACTION_MAIN, null); 

String activityName = rInfo.activityInfo.name; 
List<ResolveInfo> list = pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED); 

for (ResolveInfo rInfo : list) { 
    pkg = rInfo.activityInfo.applicationInfo.packageName; 
    if (pm.getLaunchIntentForPackage(pkg) == null) { 
     continue; 
    } 
    String label = rInfo.activityInfo.applicationInfo.loadLabel(pm).toString(); 
    arrayList.add(new AppEntry(label, activityName, pkg, null)); 
} 

sadece pkg ve activityName bilerek yapabileceğiniz:

Intent intent = new Intent(Intent.ACTION_MAIN, null); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setClassName(pkg, activityname); 
ctx.startActivity(intent); 
+1

Bu kod kesilmiyor ve doğru olarak yapıştırılmıyor (String aktivite adı ve hataları) ... sadece FYI – easycheese

5

Bu kod adını kaydeder ve Yüklenen tüm uygulamaların paket adı. LogCat kullanarak (Eclipse kullanıyorsanız) günlük kaydını kolayca kontrol edebilirsiniz.

Paket adı - uygulamanın paketinin adı.

Ad - Uygulama ile ilişkili metin etiketi. null döndüğünden sadece appInfo.name kullanamazsınız. appInfo.loadLabel(packageManager)'u kullanarak, com.android.speechrecorder paket adı yerine gerçek uygulamanın adını Konuşma Kaydedici gibi olsun.

final PackageManager packageManager = getPackageManager(); 
List<ApplicationInfo> installedApplications = 
    packageManager.getInstalledApplications(PackageManager.GET_META_DATA); 

for (ApplicationInfo appInfo : installedApplications) 
{ 
    Log.d("OUTPUT", "Package name : " + appInfo.packageName); 
    Log.d("OUTPUT", "Name: " + appInfo.loadLabel(packageManager)); 
} 
İlgili konular