2011-11-17 6 views
8

हाय मैंने नीचे दिए गए ट्यूटोरियल का पालन किया और मेरे आवेदन में मेरे सभी इंस्टॉल किए गए ऐप्स सफलतापूर्वक सूचीबद्ध किए।इंस्टॉल किए गए ऐप्स की सूची को वर्णित करें

List all installed apps in style

हालांकि यह उनके वर्णानुक्रम सूची नहीं है और मैं उन्हें कैसे सॉर्ट करने के लिए इतना है कि वे कर रहे हैं को समझ नहीं सकता। इसके लिए कोई भी सहायता अति सराहनीय होगी। मैंने इस तरह की कुछ चीजों की कोशिश की है

class IgnoreCaseComparator implements Comparator<String> { 
      public int compare(String strA, String strB) { 
       return strA.compareToIgnoreCase(strB); 
      } 
     } 
     IgnoreCaseComparator icc = new IgnoreCaseComparator(); 
     java.util.Collections.sort(SomeArrayList,icc); 

लेकिन यह पता नहीं लगा सकता कि इसे ऐप सूची शीर्षक पर कैसे लागू किया जाए। इस

=== संपादित ===

साथ किसी भी मदद के लिए धन्यवाद जबाब मैं निम्नलिखित किया था के लिए धन्यवाद, लेकिन प्रकार पर एक त्रुटि की है। त्रुटि लिखा है "विधि प्रकार प्रकार संग्रह में (सूची, तुलनाकारी) तर्कों (सूची, ApplicationInfo.DisplayNameComparator) के लिए लागू नहीं है"

private List<App> loadInstalledApps(boolean includeSysApps) { 
     List<App> apps = new ArrayList<App>(); 

     PackageManager packageManager = getPackageManager(); 

     List<PackageInfo> packs = packageManager.getInstalledPackages(0); 

     for(int i=0; i < packs.size(); i++) { 
     PackageInfo p = packs.get(i); 
     ApplicationInfo a = p.applicationInfo; 
     if ((!includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) { 
      continue; 
     } 
     App app = new App(); 
     app.setTitle(p.applicationInfo.loadLabel(packageManager).toString()); 
     app.setPackageName(p.packageName); 
     app.setVersionName(p.versionName); 
     app.setVersionCode(p.versionCode); 
     CharSequence description = p.applicationInfo.loadDescription(packageManager); 
     app.setDescription(description != null ? description.toString() : ""); 
     apps.add(app); 
     } 
     Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(packageManager)); 
     return apps; 
    } 

उत्तर

13

जब आप Android क्वेरी स्थापित अनुप्रयोगों की सूची प्राप्त करने के लिए, आप एक List<ApplicationInfo> मिलेगा। एंड्रॉयड की आपूर्ति लोगों के लिए एक ApplicationInfo.DisplayNameComparator:

Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(pm)); 

(जहां pmPackageManager का एक उदाहरण है)।

+1

मैंने अपना उपरोक्त संपादित किया लेकिन एक त्रुटि है। मेरी कक्षा में मेरे पास सूची बस सूची के बारे में कुछ भी नहीं है, क्या वे समान हैं? – GFlam

+0

इसने मेरे AsyncTask ऐप लोडर के साथ दो मुद्दों को हल किया। धन्यवाद। –

+0

@GFlam यदि आप ApplicationInfo के बजाय PackageInfo को सॉर्ट करना चाहते हैं, तो कृपया मेरा उत्तर यहां देखें: https://stackoverflow.com/a/47198817/997940 –