2013-01-18 69 views
0

我想製作一些可能稱爲動態文件夾的文件夾,其中包含一個由id(包名稱)或可見名稱的某個部分。如何獲取Android上的應用程序列表?

所以,我需要這樣的東西,你可以使用聯繫人:

Cursor contacts = managedQuery(ContactsContract.Contacts.CONTENT_URI, 
        new String[]{ 
         ContactsContract.Contacts.DISPLAY_NAME, 
         ContactsContract.Contacts._ID 
        }, 
        ContactsContract.Contacts.HAS_PHONE_NUMBER + "='1'" 
        , null, null) 

,但我需要上市的應用程序的查詢。

我還需要一種方式來從列表中選擇運行應用程序。

回答

1

您可以編寫類似:

PackageManager pm = this.getPackageManager(); 

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

    List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0); 
    Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm)); 

    int found = -1; 
    for (int i = 0; i < appList.size(); i++) { 
     String pack = appList.get(i).activityInfo.applicationInfo.packageName; 
     if (pack.equals("com.mypackage")) // Your custom criteria comes here... 
      found = i; 
    } 
    // Launch found application 
      Intent intent = new Intent(); 
     intent.setAction(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_LAUNCHER); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
     intent.setComponent(new ComponentName(appList.get(found).activityInfo.applicationInfo.packageName, appList 
       .get(found).activityInfo.name)); 
     startActivity(intent); 
+0

的偉大工程。謝謝! – Nux

相關問題