2012-06-30 19 views
5

क्या यह बताने का कोई तरीका है कि क्या मैं ड्रॉइंग योग्य से प्राप्त कर रहा हूं एप्लिकेशन एप्लिकेशन() एक डिफ़ॉल्ट/अंतर्निर्मित आइकन है या नहीं?PackageManager.getAplicationIcon() डिफ़ॉल्ट आइकन लौट रहा है?

उदाहरण के लिए, मेरे पास मेरे एमुलेटर पर कई एप्लिकेशन इंस्टॉल हैं। "एडोब रीडर" में एडोब द्वारा प्रदान किया गया एक आइकन है। दूसरी तरफ, "com.android.gesture.builder" और "नमूना सॉफ्ट कीबोर्ड", एक सामान्य एंड्रॉइड आइकन है। उन दो पैकेजों के लिए getAplicationIcon() को अलग-अलग बिटमैप ड्रायबल ऑब्जेक्ट्स लौटाए, लेकिन उन दो ऑब्जेक्ट्स पर getBitmap() को चलाने से एक ही बिटमैप ऑब्जेक्ट ([email protected]) लौटा।

मेरे पास अब तक का एकमात्र विचार How to preview R.drawable.* images जैसा कुछ करना है और सभी एंड्रॉइड को पकड़ना है। संसाधनों को खींचें, उनसे ड्रॉबल्स बनाएं, और यह देखने के लिए जांचें कि बिटमैप I getplicationIcon() से वापस आता है या नहीं उन्हें। हालांकि, यह काफी उप-इष्टतम है।

धन्यवाद!

उत्तर

12

मैंने अभी यह पता लगाया है। वहाँ एक पैकेज प्रबंधक है .getDefaultActivityIcon() विधि जो एक Drawable देता है। यदि वह ड्रायबल का बिटमैप एप्लिकेशन आइकन ड्रायरेबल बिटमैप से मेल खाता है, तो यह डिफ़ॉल्ट आइकन है।

PackageManager pm = context.getPackageManager(); 
Drawable icon = pm.getApplicationIcon(apk.package_name); 
Drawable default_icon = pm.getDefaultActivityIcon(); 
if (icon instanceof BitmapDrawable && default_icon instanceof BitmapDrawable) { 
    BitmapDrawable icon_bd = (BitmapDrawable)icon; 
    Bitmap icon_b = icon_bd.getBitmap(); 
    BitmapDrawable default_bd = (BitmapDrawable)pm.getDefaultActivityIcon(); 
    Bitmap default_b = default_bd.getBitmap(); 
    if (icon_b == default_b) { 
     // It's the default icon 
    } 
} 
संबंधित मुद्दे