Android 从Uri检索可绘制资源

Android 从Uri检索可绘制资源,android,uri,android-drawable,Android,Uri,Android Drawable,我以以下方式将可绘制资源路径存储在Uri中: Uri uri = Uri.parse("android.resource://my_app_package/drawable/drawable_name"); 如何获取uri引用的可绘制文件 我不想将其放在ImageView中,只需检索可绘制(或位图)对象。getContentResolver cr对象然后调用: is = cr.openInputStream(uri) 最后,请致电: Drawable.createFromStream(In

我以以下方式将可绘制资源路径存储在Uri中:

Uri uri = Uri.parse("android.resource://my_app_package/drawable/drawable_name");
如何获取uri引用的可绘制文件


我不想将其放在ImageView中,只需检索可绘制(或位图)对象。

getContentResolver cr对象
然后调用:

is = cr.openInputStream(uri) 
最后,请致电:

Drawable.createFromStream(InputStream is, String srcName)
…下面是一个实际工作的代码示例,您可以自己查看:

try {
    InputStream inputStream = getContentResolver().openInputStream(yourUri);
    yourDrawable = Drawable.createFromStream(inputStream, yourUri.toString() );
} catch (FileNotFoundException e) {
    yourDrawable = getResources().getDrawable(R.drawable.default_image);
}

谢谢我选择编辑@pskink的答案(与提供新答案相比),因为我只能获得部分学分。注意:您可能还需要调用
yourDrawable.setBounds(…)
,在某些情况下,例如将其设置为
TextView
的复合可绘制,如果@Avinash提到的内容是正确的,则不会在屏幕上绘制可绘制内容。