Android 从包管理器获取应用自适应图标

标签 android icons

我收到这样的应用程序启动器图标

resolveInfo.activityInfo.loadIcon(packageManager)

但在 Android 8.0 Oreo 中,由于自适应图标,此行返回空图标给我。如何检索应用自适应图标?谢谢..

最佳答案

您可以使用此类从 adaptiveIcon 获取位图。

public static class AppIconHelperV26 {

  @RequiresApi(api = Build.VERSION_CODES.O)
    public static Bitmap getAppIcon(PackageManager mPackageManager, String packageName) {

        try {
            Drawable drawable = mPackageManager.getApplicationIcon(packageName);

            if (drawable instanceof BitmapDrawable) {
                return ((BitmapDrawable) drawable).getBitmap();
            } else if (drawable instanceof AdaptiveIconDrawable) {
                Drawable backgroundDr = ((AdaptiveIconDrawable) drawable).getBackground();
                Drawable foregroundDr = ((AdaptiveIconDrawable) drawable).getForeground();

                Drawable[] drr = new Drawable[2];
                drr[0] = backgroundDr;
                drr[1] = foregroundDr;

                LayerDrawable layerDrawable = new LayerDrawable(drr);

                int width = layerDrawable.getIntrinsicWidth();
                int height = layerDrawable.getIntrinsicHeight();

                Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

                Canvas canvas = new Canvas(bitmap);

                layerDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
                layerDrawable.draw(canvas);

                return bitmap;
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }

        return null;
    }
}

关于Android 从包管理器获取应用自适应图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46130594/

相关文章:

android - 如果我不想发生任何事情,发送到 FB 时应该在 redirect_uri 中放什么?

android - 如何检测是否拍摄了照片(相机 Intent )

安卓SDK : What's the license of the included icons?

icons - 为 cmake-cpack 应用程序指定图标和菜单条目

android - 如果您有 adb 访问权限,是否可以流式传输 Android 手机的屏幕?

android - 使用 android facebook sdk v4.0 获取日期

android - flutter 行间隔因语言而异

ios - 应用程序图标在 iTunes 和 App Store 中看起来很糟糕

qt - 如何更改 Qt qListView 图标选择突出显示

iphone - iPad 上的 ios11 iphone 应用程序图标丢失