簡體   English   中英

PackageManager.getApplicationIcon()返回默認圖標?

[英]PackageManager.getApplicationIcon() returning default icon?

有沒有辦法判斷我從getApplicationIcon()獲取的Drawable是否是默認/內置圖標?

例如,我在我的模擬器上安裝了幾個應用程序。 “Adobe Reader”有一個由Adobe提供的圖標。 另一方面,“com.android.gesture.builder”和“Sample Soft Keyboard”具有通用的Android圖標。 這兩個包的getApplicationIcon()返回了不同的BitmapDrawable對象,但是在這兩個對象上運行getBitmap()返回了相同的Bitmap對象(android.graphics.Bitmap@401a7df8)。

我到目前為止唯一的想法就是做一些類似於如何預覽R.drawable。*圖像並獲取所有android.R.drawable資源,從中創建Drawables,並檢查我是否從getApplicationIcon返回的Bitmap( )匹配其中任何一個。 不過,這是非常不理想的。

謝謝!

我剛想通了。 有一個PackageManager.getDefaultActivityIcon()方法返回一個Drawable。 如果Drawable的Bitmap與應用程序圖標Drawable的Bitmap匹配,則它是默認圖標。

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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM