gpt4 book ai didi

android - 在 Android 中获取应用程序图标

转载 作者:IT老高 更新时间:2023-10-28 23:18:17 26 4
gpt4 key购买 nike

我在检索已安装的 Android 应用程序的图标时遇到了一些问题。以下代码返回所有应用程序的图标,但是,某些应用程序返回小图标(可能来自 drawable - ldpi 文件夹),而有些应用程序带有大图标。

List<PackageInfo> package = getPackageManager().getInstalledPackages(0);

for(PackageInfo p : package){
iApp.icon = p.applicationInfo.loadIcon(getPackageManager());
}

我怎样才能获得大小相同的图标,就像在 Android 的“管理应用程序”部分中一样?

最佳答案

我想在之前的回答中添加一些适用于 Android 3.0 及更高版本的内容。

您会注意到以这种标准方式(我的意思是 applicationInfo.loadIcon 和其他典型方法)检索的图标比您在启动器应用中看到的图标小。放大只会使图标更模糊。如果你想要大图标,你可以使用下一个代码(我从启动器源代码中获取它,你可以找到 here 并进行了一些更改)。注意 activityManager.getLauncherLargeIconDensity 方法。

public Drawable getFullResDefaultActivityIcon() {
return getFullResIcon(Resources.getSystem(), android.R.mipmap.sym_def_app_icon);
}

public Drawable getFullResIcon(Resources resources, int iconId) {
Drawable d;
try {
ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
int iconDpi = activityManager.getLauncherLargeIconDensity();
d = resources.getDrawableForDensity(iconId, iconDpi);
} catch (Resources.NotFoundException e) {
d = null;
}

return (d != null) ? d : getFullResDefaultActivityIcon();
}

public Drawable getFullResIcon(String packageName, int iconId) {
Resources resources;
try {
resources = mContext.getPackageManager().getResourcesForApplication(packageName);
} catch (PackageManager.NameNotFoundException e) {
resources = null;
}
if (resources != null) {
if (iconId != 0) {
return getFullResIcon(resources, iconId);
}
}
return getFullResDefaultActivityIcon();
}

public Drawable getFullResIcon(ResolveInfo info) {
return getFullResIcon(info.activityInfo);
}

public Drawable getFullResIcon(ActivityInfo info) {
Resources resources;
try {
resources = mContext.getPackageManager().getResourcesForApplication(info.applicationInfo);
} catch (PackageManager.NameNotFoundException e) {
resources = null;
}
if (resources != null) {
int iconId = info.getIconResource();
if (iconId != 0) {
return getFullResIcon(resources, iconId);
}
}
return getFullResDefaultActivityIcon();
}

private Drawable getAppIcon(ResolveInfo info) {
return getFullResIcon(info.activityInfo);
}

希望对某人有所帮助。

关于android - 在 Android 中获取应用程序图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4600740/

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