Android - d'obtenir une image de la ressource en Uri: IllegalArgumentException
Je suis en train de charger une image à partir de la ressource dans mon application Android, mais je reçois le "IllegalArgumentException: Attendu fichier de schéma d'URI" erreur.
J'ai mis mon " missing_album_art.png' fichier dans drawable-hdpi, drawable-ldpi et drawable-mdpi dossiers dans mon projet et actualisée de l'Éclipse de sorte qu'il affiche ils sont là.
La ligne que j'utilise pour créer de l'Uri:
Uri uri = Uri.parse("android.resource://android.aberplayer/R.drawable.missing_album_art");
Le 'android.aberplayer' est le paquet principal de ma candidature, et aussi l'une contenant la classe dans laquelle j'utilise la ligne ci-dessus.
L'erreur que je reçois est:
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)
Il ya quelque chose que je ne comprends pas sur l'accès à l'image des ressources dans les applications Android?
Vous devez vous connecter pour publier un commentaire.
Si vous pouvez mettre le fichier d'image dans
assets
dossier, le code ci-dessous peut être utilisée pour obtenir laUri
-Noter que
Uri.parse
est utilisé pour obtenir laUri
à partir d'une chaîneUrl
pas à partir d'une ressource directement. Il y a d'autres solution plus propre, mais je ne pouvais pas rappeler. Je vais mettre à jour le post quand je les ai trouvés.Edit:
La Chaîne chemin de l'Uri doit être dans le format suivant si vous souhaitez utiliser la ressource directement:-
Vérifier ce post.
ContentResolver.SCHEME_ANDROID_RESOURCE
Les ressources répertoriées entiers. Vous souhaitez obtenir la valeur de l'entier de R. drawable.missing_album_art, puis ajouter que, pour le reste de votre chaîne de chemin. c'est à dire,
...qui est, si vous avez vraiment besoin de l'Uri. Normalement, vous pouvez simplement utiliser une ressource d'image comme ceci:
Si vous voulez lire une ressource dans un fichier, ce qui suit est une façon de le faire (il écrit un fichier dans le répertoire de l'application (c'est à dire /data/data/paquet) avec le nom de "nom de fichier"):
java.lang.IllegalArgumentException: Expected file scheme in URI: android.resource://src.android.aberplayer/2130837505
Uri.parse
ligne. Peut-être avec un peu plus de contexte/lignes de code. Pourquoi êtes-vous à l'aide d'une Uri/comment l'utilisez-vous?currentAlbumArt = new File(new URI(uri.toString()));
modifié réponse avec une méthode pour la rédaction d'une ressource dans un fichier. Toujours pas sûr si c'est ce que vous cherchez.Essayez plutôt ceci
currentAlbumArt = new File(new URI(uri.toString()));