我已经尝试了各种解决方案,从堆栈溢出没有运气。我想要的。1.我知道不同应用程序包名称。1.我想从这些软件包名称应用程序图标。1.在Image View中显示这些图标。例如,我有一个包名com.example.testnotification .如何获得这个应用程序图标并在ImageView中显示它?
com.example.testnotification
gk7wooem1#
试试这个:
try { Drawable icon = getContext().getPackageManager().getApplicationIcon("com.example.testnotification"); imageView.setImageDrawable(icon); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); }
nr9pn0ug2#
如果你想从软件包名称中获取任何已安装应用程序的图标(图片),只需复制并粘贴以下代码即可:
try { Drawable d = getPackageManager().getApplicationIcon("com.AdhamiPiranJhandukhel.com"); my_imageView.setBackgroundDrawable(d); } catch (PackageManager.NameNotFoundException e) { return; }
vuv7lop33#
这也适用于:
try { Drawable d = getPackageManager().getApplicationIcon(getApplicationInfo()); my_imageView.setBackgroundDrawable(d); } catch (PackageManager.NameNotFoundException e) { return; }
webghufk4#
try { Drawable drawable = getPackageManager() .getApplicationIcon("com.whatsapp"); imageView.setImageDrawable(drawable); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); }
vc9ivgsu5#
我尝试了上述所有答案,但只能从系统应用程序中获得图标,Android 11(API级别30)或更高版本中面临的问题,稍微挖掘一下,我找到了this docs page,它说你需要在AndroidManifest文件中添加以下权限:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" />
现在所有图标都可见。我使用了下面的代码段来使用DataBinding实现上述功能:
@BindingAdapter("getImageFromPackageName") fun ImageView.getImageFromPackageName(packageName: String) { try { val icon = context.packageManager.getApplicationIcon(packageName) this.setImageDrawable(icon) } catch (e: PackageManager.NameNotFoundException) { e.printStackTrace() } }
希望有帮助,谢谢!
5条答案
按热度按时间gk7wooem1#
试试这个:
nr9pn0ug2#
如果你想从软件包名称中获取任何已安装应用程序的图标(图片),只需复制并粘贴以下代码即可:
vuv7lop33#
这也适用于:
webghufk4#
vc9ivgsu5#
我尝试了上述所有答案,但只能从系统应用程序中获得图标,Android 11(API级别30)或更高版本中面临的问题,稍微挖掘一下,我找到了this docs page,它说你需要在AndroidManifest文件中添加以下权限:
现在所有图标都可见。
我使用了下面的代码段来使用DataBinding实现上述功能:
希望有帮助,谢谢!