Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-将图像资源放入Uri:IllegalArgumentException_Android_Image_Resources_Uri_Drawable - Fatal编程技术网

Android-将图像资源放入Uri:IllegalArgumentException

Android-将图像资源放入Uri:IllegalArgumentException,android,image,resources,uri,drawable,Android,Image,Resources,Uri,Drawable,我正在尝试从Android应用程序中的资源加载一个图像,但我一直收到“IllegalArgumentException:URI中的预期文件方案”错误 我把我的“missing_album_art.png”文件放在我的项目中的drawable hdpi、drawable ldpi和drawable mdpi文件夹中,并刷新Eclipse以显示它们在那里 我用来创建Uri的行是: Uri uri = Uri.parse("android.resource://android.aberplayer/R

我正在尝试从Android应用程序中的资源加载一个图像,但我一直收到“IllegalArgumentException:URI中的预期文件方案”错误

我把我的“missing_album_art.png”文件放在我的项目中的drawable hdpi、drawable ldpi和drawable mdpi文件夹中,并刷新Eclipse以显示它们在那里

我用来创建Uri的行是:

Uri uri = Uri.parse("android.resource://android.aberplayer/R.drawable.missing_album_art");
“android.aberplayer”是我的应用程序的主包,也是包含我在其中使用上述代码的类的包

我经常遇到的错误是:

03-16 00:16:29.252: E/AndroidRuntime(25598): FATAL EXCEPTION: main
03-16 00:16:29.252: E/AndroidRuntime(25598): java.lang.IllegalArgumentException: Expected file scheme in URI: android.resource://src.android.aberplayer/R.drawable.missing_album_art
03-16 00:16:29.252: E/AndroidRuntime(25598):    at java.io.File.checkURI(File.java:245)
03-16 00:16:29.252: E/AndroidRuntime(25598):    at java.io.File.<init>(File.java:182)
03-16 00:16:29.252: E/AndroidRuntime(25598):    at android.aberplayer.CurrentSongList.getCurrentAlbumArt(CurrentSongList.java:69)
03-16 00:16:29.252:E/AndroidRuntime(25598):致命异常:main
03-16 00:16:29.252:E/AndroidRuntime(25598):java.lang.IllegalArgumentException:URI中应包含文件方案:android。resource://src.android.aberplayer/R.drawable.missing_album_art
03-16 00:16:29.252:E/AndroidRuntime(25598):位于java.io.File.checkURI(File.java:245)
03-16 00:16:29.252:E/AndroidRuntime(25598):位于java.io.File.(File.java:182)
03-16 00:16:29.252:E/AndroidRuntime(25598):在android.aberplayer.CurrentSongList.getCurrentAlbumArt(CurrentSongList.java:69)
在Android应用程序中访问图像资源有什么我不了解的吗?

试试这个

Uri uri = Uri.parse("R.drawable.missing_album_art");

所有资源都映射到整数。您希望获得R.drawable.missing_album_art的整数值,然后将其附加到路径字符串的其余部分。i、 e

Uri uri = Uri.parse("android.resource://android.aberplayer/" + R.drawable.missing_album_art);
…也就是说,如果您确实需要Uri。通常,您可以使用如下图像资源:

view.setImageResource(R.drawable.missing_album_art);
如果要将资源读入文件,以下是一种方法(这会将名为“filename”的文件写入应用程序目录(即/data/data/packagename)):


如果可以将图像文件放入
assets
文件夹,则可以使用下面的代码获取
Uri
-

Uri uri=Uri.parse("file:///android_asset/images/missing_album_art.png");
请注意,
Uri.parse
用于从字符串
Url
获取
Uri
,而不是直接从资源获取。还有其他更清洁的解决方案,但我想不起来了。我找到他们后会更新帖子的

编辑: 如果要直接使用资源,字符串Uri路径应采用以下格式:-

"android.resource://[package]/[res type]/[res name]"

检查

当我尝试使用以下内容将URI转换为文件时,会导致“IllegalArgumentException:URI不是绝对的:R.drawable.missing_album_art:
currentAlbumArt=new File(新URI(URI.toString())”我更改了代码,将R.drawable.missing_album_艺术添加到字符串中,但问题仍然存在,只是现在错误行是
java.lang.IllegalArgumentException:URI:android中的预期文件方案。resource://src.android.aberplayer/2130837505
是否可能是因为我试图在与活动不同的类中使用上述Uri.parse行而出现问题?当我把它用在应该显示图片的活动中时,它起了作用。然而,当我尝试在另一个类中使用它时,它不会扩展或实现任何Android类,它会导致一个错误。你能给我解释一下吗?(你需要看代码吗?@KurakDarcia嗯。老实说,我不确定。我觉得错误不是来自
Uri.parse
行。可能会发布更多的上下文/代码行。为什么要使用Uri/如何使用它?刚才在下面看到您的评论,错误实际上来自
currentAlbumArt=new File(new Uri(Uri.toString())修改的答案,带有将资源写入文件的方法。仍然不确定这是否是您正在寻找的。只是提醒您框架中的常量是:
ContentResolver.SCHEME\u ANDROID\u RESOURCE
"android.resource://[package]/[res type]/[res name]"