Mediaplayer nicht geöffnet werden analysiert URI
Versuchen, eine Datei zu öffnen mit Uri.analysieren, aber ich bekomme immer Zugriff verweigert. Ich bin sehr ratlos, was falsch ist.
Den Manifest.xml
abgeschnitten zur besseren Lesbarkeit
<application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</application>
Den code-snippet, das den Fehler verursacht:
Uri video = Uri.parse(Environment.getExternalStorageDirectory()
.getAbsolutePath()+"/victamjpeg.sdp");
videoView.setVideoURI(video);
Und den tatsächlichen Fehler:
10-30 01:11:38.640 4293-4293/? W/MediaPlayer: Konnte nicht geöffnet werden-Datei auf der client-Seite; versucht server-Seite java.io.FileNotFoundException: No content-provider: /storage/1A0C-331C/victamjpeg.sdp
10-30 01:11:38.640 4293-4293/? W/VideoView: java.io.FileNotFoundException: /storage/1A0C-331C/victamjpeg.sdp: open failed: EACCES (Permission denied)
10-30 01:11:38.640 4293-4293/? W/VideoView: bei java.io.FileInputStream.(FileInputStream.java:76)
10-30 01:11:38.640 4293-4293/? W/VideoView: bei java.io.FileInputStream.(FileInputStream.java:76)
Sieht es aus wie ich haben nicht die Berechtigungen zu Lesen, aber ich habe meines Wissens festgelegt, dass die Erlaubnis. Dabei eine ls -l
aus adb shell
beweist, dass die Datei bei /sdcard/victamjpeg.sdp
im Besitz von root.
- entfernen "/" zu dieser oder zu ändern "\"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst scheint es, dass Ihre
<uses-permission>
Elemente sind an der falschen Stelle. Sie müssen die Kinder von<manifest>
, Kollegen<application>
. Was Sie haben, zeigt Ihnen, wie Kinder von<application>
.Zweiten ersetzen:
mit:
Diesem Griffe, der Fall, wo
getExternalStorageDirectory()
gibt einen Wert mit einem nachgestellten/
. Er stellt auch die Regelung in derUri
Ihrer Implementierung nicht, was sich in einer allgemein ungültigUri
.Beachten Sie auch, dass, wenn Sie testen auf Android 6.0, dass der Speicher Berechtigungen sind
dangerous
ein, und Sie verwenden müssen, die Laufzeit Berechtigung system wenn IhrtargetSdkVersion
ist 23 oder höher.In der uses-permission-tags werden müssen, die außerhalb des application-tag.