cra*_*535 5 android bitmap drawable
有没有办法判断我从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( )匹配其中任何一个.不过,这是非常不理想的.
谢谢!
cra*_*535 12
我刚想通了.有一个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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5667 次 |
| 最近记录: |