2011-04-01 14 views
9

मैं एंड्रॉइड फोन पर स्थापित तृतीय-पक्ष एप्लिकेशन की सूची कैसे प्राप्त कर सकता हूं।इंस्टॉल किया गया एप्लिकेशन तीसरे पक्ष है या नहीं

मैं नीचे दिए गए कोड के साथ आवेदन की सूची प्राप्त करने में सक्षम हूं लेकिन मुझे केवल तृतीय-पक्ष एप्लिकेशन चाहिए।

PackageManager pm = context.getPackageManager(); 
appInstalModel.setAppName(p.applicationInfo.loadLabel(context.getPackageManager()).toString()); 
appInstalModel.setAppPkg(p.packageName); 
appInstalModel.setAppVersionName(p.versionName); 
+0

आप तीसरे पक्ष द्वारा क्या मतलब है? Google से नहीं? तुमसे नहीं? – RoflcoptrException

+0

@Roflcoptr सिस्टम पर स्थापित या उपयोगकर्ता द्वारा स्थापित किया गया। –

उत्तर

7
List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0); 
    for (int i=0; i < apps.size(); i++) 
    { 
     if ((apps.get(i).flags & ApplicationInfo.FLAG_SYSTEM) == 1) 
     { 
      //System app 
     } 
    } 
+1

मुझे लगता है कि यह इसे पसंद करना चाहिए। अगर ((apps.get (i) .applicationInfo.flags और ApplicationInfo.FLAG_SYSTEM) == 1) { // सिस्टम ऐप } –

2

ApplicationInfo वस्तु FLAG_SYSTEM ध्वज सेट नहीं होगा। sdmove प्रोग्राम में कुछ नमूना कोड हो सकता है।

+0

सही। मुझे इसमें देखना है। –

+0

मैं sdmove प्रोजेक्ट को कैसे क्लोन कर सकता हूं? –

2

@Roflcoptr उत्तर में छोटे बदलाव।

List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0); 
for (int i=0; i < apps.size(); i++) 
{ 
    if ((apps.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) 
    { 
     //System app 
    } 
} 

धन्यवाद आपके उत्तर के लिए @Roflcoptr।

+3

मैं अत्यधिक '(XXX और ApplicationInfo.FLAG_SYSTEM) == 1 से इसे बदलने की अनुशंसा करता हूं) 'से' (XXX और ApplicationInfo.FLAG_SYSTEM)! = 0) 'या' (XXX और ApplicationInfo.FLAG_SYSTEM == ApplicationInfo.FLAG_SYSTEM) '। 1 केवल काम करता है क्योंकि FLAG_SYSTEM 1 होता है, लेकिन यह एक हार्डकोडेड मान है। –

7

RoflcoptrException का उत्तर सही है। लेकिन कुछ मामलों में यह आपको सभी स्थापित तृतीय-पक्ष अनुप्रयोग नहीं देगा। ApplicationInfo भी झंडा FLAG_UPDATED_SYSTEM_APP जो सेट कर दिया जाता

इस आवेदन किया गया है आवेदन

मेरी स्मार्ट फोन ऐसे आवेदनों पर एक अंतर्निहित सिस्टम के लिए एक अद्यतन के रूप में स्थापित Amazone Kindle, Adobe Reader शामिल हैं है, स्लैकर रेडियो और अन्य। ये एप्लिकेशन फोन के साथ नहीं आए और Google Play Store से इंस्टॉल किए गए थे। इस प्रकार, उन्हें तीसरे पक्ष के ऐप्स के रूप में माना जा सकता है।

तो, आप FLAG_UPDATED_SYSTEM_APP ध्वज को भी देखना चाहते हैं।

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

for (ApplicationInfo appInfo : installedApplications) 
{ 
    if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) 
    { 
     // IS A SYSTEM APP 
    } 

    if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) 
    { 
     // APP WAS INSTALL AS AN UPDATE TO A BUILD-IN SYSTEM APP 
    } 
} 
0
public static List<PackageInfo> getInstalledAppList(Context context) { 
     ArrayList<PackageInfo> packList = (ArrayList<PackageInfo>) context.getPackageManager().getInstalledPackages(0); 
     showLog("/n/n ********************** App List ********************"); 
     for (int i = 0; i < packList.size(); i++) { 

      PackageInfo packInfo = packList.get(i); 
      if ((packInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { 
       String appName = packInfo.applicationInfo.loadLabel(context.getPackageManager()).toString(); 
       showLog(appName + "(" + packInfo.packageName + ")"); 
      } else { 
       packList.remove(i); 
       i--; 
      } 
     } 

     showLog("List Size : " + packList.size()); 
     showLog("/n/n ********************** END ********************"); 
     return packList; 
    } 
संबंधित मुद्दे

 संबंधित मुद्दे