Get other applications icon uri?

给你一囗甜甜゛ 提交于 2019-12-07 11:21:04

问题


I have an Android appwidget which shows icons of other applications on it.

I get the other applications icons with appInfo.loadIcon and then I set it to the widgets with setImageViewBitmap.

The problem is that if I have too many icons on the widget, I get "FAILED BINDER TRANSACTION" error. I understand that it's from a size limit and the solution it to use the image uri instead of the bitmap itself.

Is there an accessible URI to other applications' icons?

Thanks.


回答1:


Try android.resource://[package]/[res type]/[res name], where [res type] in your case would be drawable. The package and name would have to come from the ResolveInfo or wherever you are getting your data.




回答2:


In case you don't know the resource name, you can also access resources by their id:

android.resource://[package]/[res_id]

The resource id of the app icon is available in the ApplicationInfo of the app:

ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
if(appInfo.icon != 0) {
    Uri uri = Uri.parse("android.resource://" + packageName + "/" + appInfo.icon);
}



回答3:


While @CommonWare's answer is good in many cases, I find that this is often easier: android.resource://[package]/[res id] - especially when you want a reference to for instance the launcher icon of some other app.



来源:https://stackoverflow.com/questions/7118260/get-other-applications-icon-uri

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!