getApplicationIcon()通过PackageManager返回放置在中心的白色条形图像,而不是实际的应用程序图标

问题描述 投票:3回答:3

在我调用getApplicationIcon()之后:

context.getPackageManager().getApplicationIcon("com.cmcm.gamemaster");

它返回:

white bar image

放在中间的白色条形图像。并且总是针对特定应用程序发生,安装的应用程序列表中的其他人永远不会返回错误的图标

在调用该方法之前,我调用getPackageInfo()大约30次来构建一个已安装的应用程序列表。所以我评论了那些代码然后问题就消失了。

我在框架的源代码(android 6.0.1)中注意,但没有找到任何有用的信息。

有些人之前遇到过这个问题,或者在框架的源代码中告诉我错误的图标的可绘制文件名,这样我就可以检查发生了什么。

预先感谢。

android android-package-managers
3个回答
1
投票

根据您的描述,我假设您要获取已安装的应用程序列表。试试这个来获取所有应用程序:

import android.content.pm.ApplicationInfo;
...
List<ApplicationInfo> apps = context.getPackageManager().getInstalledApplications(0);
...

如果您想要代码中的特定代码,请尝试以下方法:

import android.content.pm.ApplicationInfo;
...
ApplicationInfo app = context.getPackageManager().getApplicationInfo("com.cmcm.gamemaster", 0);
Icon icon = app.loadIcon(getPackageManager());
...

您可以从apps/app获取图标或标题,因为它包含与应用程序相关的所有信息。请记住使用确切的import语句。

如果上述方法不起作用,请参阅this post。我相信这将是有用的。


-1
投票

首先获取PackageManager实例,

然后在getApplicationIcon(String)中传递packageName,它将返回Bitmap!

PackageManager packageManager = mContext.getPackageManager();
Bitmap mBitmap = packageManager.getApplicationIcon(app.package.name);
holder.appIcon.setImageDrawable(mBitmap);

-1
投票

getPackageManager()。getApplicationIcon(“APP_PACKAGE_NAME”)返回Drawable。获得drawable后,您可以使用imageView.setImageDrawable(drawable)在imageView中显示图标。

提示: - 获取所有已安装的应用程序图标可能会挂起您的UI,因此您必须在单独的线程中执行此操作。

new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    final Drawable drawable = mContext.getPackageManager().getApplicationIcon(applicationInfo.packageName);
                    ((Activity) mContext).runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            holder.imageView.setImageDrawable(drawable);
                        }
                    });

                } catch (PackageManager.NameNotFoundException e) {
                    e.printStackTrace();
                }
            }
        }).start();

希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.