问题描述
我们可以找到第三方应用程序图标的资源标识符吗?实际上,我想显示带有图标的第三方应用程序。
为了显示第三方应用程序,我使用listview。
在适配器的getView方法中,我使用以下代码applicationInfo = pm.getApplicationInfo(appNames.get(position),pm.GET_META_DATA); imageViewAppIcon.setImageDrawable(applicationInfo.loadIcon(pm));
applicationInfo = pm.getApplicationInfo(appNames.get(position),pm.GET_META_DATA); imageViewAppIcon.setImageDrawable(applicationInfo.loadIcon(pm));
并且会降低列表视图的性能。
并且如果我在ArrayList中拥有drawable,那么它将拥有Drawable(objects。)的大型列表。有帮助吗?
1楼
这样,您可以为手机上所有已安装的应用检索应用标签和图标:
PackageManager pm = getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0);
for (ResolveInfo resolveInfo : list) {
// Retrieve the current graphical icon associated with this resolution.
Drawable drawable = resolveInfo.loadIcon(pm);
// Retrieve the current textual label associated with this resolution.
CharSequence label = resolveInfo.loadLabel(pm);
}
您可以使用标签找到合适的应用。 但是,最好将完整的类名添加到搜索意图中。
如果该应用未安装在手机上,并且仅在市场上可用,请检查 。
如果您想从第三方应用程序中获取其他资源,请查看getResourcesForApplication
:
String packageName = "com.example.app";
Resources res = context.getPackageManager().getResourcesForApplication(packageName);