gpt4 book ai didi

android - PackageManager.getApplicationIcon() 返回默认图标?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:03:13 25 4
gpt4 key购买 nike

有没有办法判断我从 getApplicationIcon() 返回的 Drawable 是否是默认/内置图标?

例如,我的模拟器上安装了几个应用程序。 “Adobe Reader”有一个由 Adob​​e 提供的图标。另一方面,“com.android.gesture.builder”和“Sample Soft Keyboard”具有通用的 Android 图标。这两个包的 getApplicationIcon() 返回不同的 BitmapDrawable 对象,但在这两个对象上运行 getBitmap() 返回相同的 Bitmap 对象 (android.graphics.Bitmap@401a7df8)。

到目前为止我唯一的想法就是做类似 How to preview R.drawable.* images 的事情并获取所有 android.R.drawable 资源,从中创建 Drawable,并检查我从 getApplicationIcon() 返回的位图是否与其中任何一个匹配。不过,这并不是最佳选择。

谢谢!

最佳答案

我刚刚弄明白了。有一个返回 Drawable 的 PackageManager.getDefaultActivityIcon() 方法。如果该 Drawable 的位图与应用程序图标 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
}
}

关于android - PackageManager.getApplicationIcon() 返回默认图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com