从Android上已安装的应用程序中获取非自适应图标

defenestr8me

我正在创建一个应用程序,该应用程序获取手机上当前安装的所有应用程序的列表,并且试图获取该应用程序的方形图标。如果我执行以下操作:

getPackageManager().getApplicationIcon(thePackageName);

该图标会获取图标,但会根据设备上当前设置的样式(圆形,圆形等)显示。如果我更改了手机上的图标形状,则会获得应用了新形状的图标。有什么办法可以得到方形图标吗?

我也一直在尝试使用getDrawableForDensity()可以与图标密度和主题配合使用的主题,我认为这可能是我追求的目标,但仍然无法按预期工作。

defenestr8me

我已经找到了解决方案,尽管它可能不是最好的方法。如果没有Adaptive Mask,我将无法获得整个图标,因此我检查了Drawable是否为AdaptiveIconDrawable,然后提取了背景和前景并将它们都绘制到画布上以返回。

    public Bitmap drawableToBitmap (Drawable drawable) {
        if (drawable instanceof BitmapDrawable) {
            return ((BitmapDrawable) drawable).getBitmap();
        } else if ((Build.VERSION.SDK_INT >= 26)
                && (drawable instanceof AdaptiveIconDrawable)) {
            AdaptiveIconDrawable icon = ((AdaptiveIconDrawable)drawable);
            Drawable bg = icon.getBackground();
            Drawable fg = icon.getForeground();
            int w = icon.getIntrinsicWidth();
            int h = icon.getIntrinsicHeight();
            Bitmap result = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(result);
            icon.setBounds(0, 0, w, h);
            bg.draw(canvas);
            if (fg instanceof Drawable) {
                fg.draw(canvas);
            }
            return result;
        }
        float density = getBaseContext().getResources().getDisplayMetrics().density;
        int defaultWidth = (int)(48* density);
        int defaultHeight = (int)(48* density);
        return Bitmap.createBitmap(defaultWidth, defaultHeight, Bitmap.Config.ARGB_8888);
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自适应应用程序搜索中图标的来源?

来自分类Dev

Ionic在Android设备上获取已安装的应用程序

来自分类Dev

获取Android设备上已安装的应用程序数量?

来自分类Dev

通过Java代码获取android设备上已安装的应用程序的.apk文件

来自分类Dev

在Android上仅显示Particuar已安装的应用程序

来自分类Dev

如何获取Android中已安装应用程序的标准名称

来自分类Dev

如何获取Android中已安装应用程序的标准名称

来自分类Dev

如何获取已安装的应用程序图标并使之可用于gridView

来自分类Dev

识别 Web 应用程序机器人上的自适应卡片点击

来自分类Dev

在Android的设备设置中不显示已安装应用程序中的应用程序

来自分类Dev

如何制作适用于移动设备和平板电脑的自适应Android应用程序?

来自分类Dev

Android应用程序自适应(适合所有屏幕尺寸)

来自分类Dev

在Android上安装时,可安装的Web应用程序不使用图标

来自分类Dev

如何获取已安装或已删除应用程序的名称?

来自分类Dev

如何仅在 AndroidManifest.xml 文件中为 android 设备中已安装的应用程序获取权限?

来自分类Dev

通过wsadmin获取WAS 7上已安装的应用程序的上下文根

来自分类Dev

使用Search API,可以获取iOS上已安装应用程序的列表吗?

来自分类Dev

通过wsadmin获取WAS 7上已安装的应用程序的上下文根

来自分类Dev

如何在Android中安装已安装的应用程序,而又没有系统应用程序?

来自分类Dev

Android:在应用程序中显示图标

来自分类Dev

如何在适用于 iOS 和 Android 的 Outlook Mobile 应用程序中启用显示从 Microsoft Flow 发送的自定义自适应卡片?

来自分类Dev

如何在Android中获取并列出所有已安装/可用的导航应用及其图标?

来自分类Dev

可可获取已安装应用程序的列表

来自分类Dev

如何获取已安装的Metro应用程序的显示名称

来自分类Dev

获取所有已安装的X应用程序的列表

来自分类Dev

如何获取已安装应用程序的请求权限?

来自分类Dev

在Android上以编程方式对已安装的应用程序列表进行分类

来自分类Dev

已安装Android应用程序,但无法在设备上打开

来自分类Dev

应用程序已安装在Android Lollipop上,但无法运行

Related 相关文章

  1. 1

    自适应应用程序搜索中图标的来源?

  2. 2

    Ionic在Android设备上获取已安装的应用程序

  3. 3

    获取Android设备上已安装的应用程序数量?

  4. 4

    通过Java代码获取android设备上已安装的应用程序的.apk文件

  5. 5

    在Android上仅显示Particuar已安装的应用程序

  6. 6

    如何获取Android中已安装应用程序的标准名称

  7. 7

    如何获取Android中已安装应用程序的标准名称

  8. 8

    如何获取已安装的应用程序图标并使之可用于gridView

  9. 9

    识别 Web 应用程序机器人上的自适应卡片点击

  10. 10

    在Android的设备设置中不显示已安装应用程序中的应用程序

  11. 11

    如何制作适用于移动设备和平板电脑的自适应Android应用程序?

  12. 12

    Android应用程序自适应(适合所有屏幕尺寸)

  13. 13

    在Android上安装时,可安装的Web应用程序不使用图标

  14. 14

    如何获取已安装或已删除应用程序的名称?

  15. 15

    如何仅在 AndroidManifest.xml 文件中为 android 设备中已安装的应用程序获取权限?

  16. 16

    通过wsadmin获取WAS 7上已安装的应用程序的上下文根

  17. 17

    使用Search API,可以获取iOS上已安装应用程序的列表吗?

  18. 18

    通过wsadmin获取WAS 7上已安装的应用程序的上下文根

  19. 19

    如何在Android中安装已安装的应用程序,而又没有系统应用程序?

  20. 20

    Android:在应用程序中显示图标

  21. 21

    如何在适用于 iOS 和 Android 的 Outlook Mobile 应用程序中启用显示从 Microsoft Flow 发送的自定义自适应卡片?

  22. 22

    如何在Android中获取并列出所有已安装/可用的导航应用及其图标?

  23. 23

    可可获取已安装应用程序的列表

  24. 24

    如何获取已安装的Metro应用程序的显示名称

  25. 25

    获取所有已安装的X应用程序的列表

  26. 26

    如何获取已安装应用程序的请求权限?

  27. 27

    在Android上以编程方式对已安装的应用程序列表进行分类

  28. 28

    已安装Android应用程序,但无法在设备上打开

  29. 29

    应用程序已安装在Android Lollipop上,但无法运行

热门标签

归档