从另一个Android应用程序获取图标

12

如果我知道另一个安卓应用的包名,我该如何从该应用进入Icon Launcher?

示例

String googlePackageName = "com.google.maps";

Drawable googleIcon = googlePackageName.getIconLauncher() or something.
3个回答

22
使用PackageManager的getApplicationIcon()方法完成此任务:getApplicationIcon()。
Drawable appIcon = getPackageManager().getApplicationIcon("com.google.maps");

你能否扩展一下你的回答?请写出具体的代码行。谢谢。 - Naskov
有趣的是,在Compose中这并不起作用。 val drawable = packageManager.getApplicationIcon(app.packageName) Icon( drawable.toBitmap(config = Bitmap.Config.ARGB_8888).asImageBitmap() , contentDescription = "图标", modifier = Modifier .padding(8.dp), tint = MaterialTheme.colorScheme.secondary )它会给出一个填充圆形。 - Mehdi Haghgoo

3

我遇到了这个问题,之前从未听说过。 但我猜这应该是解决方案:

Drawable icon = context.getPackageManager().getApplicationIcon(packageName);

1
以下代码片段应该能指引您朝正确的方向前进:
final Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setPackage( packageName );
final List<ResolveInfo> pkgAppsList = pm.queryIntentActivities( intent, 0 );
if( pkgAppsList.size() > 0 ) {
    this.url = pkgAppsList.get(0).activityInfo.name;
    icon = pkgAppsList.get(0).activityInfo.loadIcon( pm );
    this.displayName = pkgAppsList.get(0).activityInfo.loadLabel( pm ).toString();
    this.module = pkgAppsList.get(0).activityInfo.packageName;
    this.isExternal = true;
    this.count = count;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接