Android: FileProvider IllegalArgumentException pas réussi à trouver la racine de configuration qui contient /data/data/**/fichiers/Vidéos/final.mp4
Je suis en train d'utiliser FileProvider
pour lire une vidéo à partir de chemin d'accès privé.Face à
java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/XXXXX(Package)/files/Videos/final.mp4
Code:
<paths>
<files-path path="my_docs" name="Videos/" />
</paths>
De code Java:
File imagePath = new File(getFilesDir(), "Videos");
File newFile = new File(imagePath, "final.mp4");
Log.d(TAG, "-------------newFile:"+newFile.exists());//True here
//Exception in below line
Uri contentUri = FileProvider.getUriForFile(this,"com.wow.fileprovider", newFile);
Manifest.xml
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.wow.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
Des indices sur ce?
Merci
Nitz
- J'ai été faire "l'Attribut est manquant Android préfixe d'espace de noms" dans @xml/file_paths tandis que la mise en œuvre de Fileprovider plus tard..de toute façon je fini par égarer le nom et le chemin d'accès et fini avec ce problème..
Vous devez vous connecter pour publier un commentaire.
Vous avez votre
name
et votrepath
renversé.name
est ce qui se passe dans leUri
, etpath
est la position relative à l'intérieur de la racine du système de fichiers.Aller avec:
FLAG_GRANT_READ_URI_PERMISSION
à votreIntent
que vous utilisez avecstartActivity()
pour lancer le lecteur. Si par "lecteur vidéo" vous voulez direMediaPlayer
, j'irais leFileDescriptor
route plutôt qu'uneContentProvider
. Si par "lecteur vidéo" vous voulez direVideoView
, je n'ai pas de suggestions.getFilesDir()
. Une autre chose à garder sur lookout.J'ai eu la même situation de base. J'ai défini tout correctement (fichiers-chemin en xml), mais il y a une chose qui conduit à la même exception. J'ai ajouter une autre réponse juste comme un complément et un commentaire ne serait pas bien lisible.
J'ai créé/lire le répertoire où je stocke les fichiers tels que:
Cela conduit à un chemin comme:
/data/user/0/ch.myapp/app_Documents/6c3c70d5-af66-48ef-8dfc-f4341de4e1bd.docx
Puis j'ai changé de créer le répertoire:
Cela conduit à un chemin comme:
/data/user/0/ch.myapp/files/Documents/6c3c70d5-af66-48ef-8dfc-f4341de4e1bd.docx
Selon la documentation Ouvrir un répertoire les deux méthodes doivent être équivalent comme autant que je le comprends. Mais il se crée un chemin différent... Peut-être que la formulation n'est tout simplement pas clair pour moi dans la documentation, mais pour moi son tort écrite.