Ich habe dieses scheinbar einfachen CodeContentResolver openInputStream() throws FileNotFound auf vorhandene Datei
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File testfile = new File(path,"image.jpg");
Log.d(TAG,"testfile: " + testfile + " exists: " + testfile.exists());
Uri uri = Uri.fromFile(testfile);
ContentResolver cr = context.getContentResolver();
InputStream istr = cr.openInputStream(uri);
Die Ausgabe lautet:
testfile: /storage/emulated/0/Pictures/image.jpg exists: true
Der uri Wert ist file:///storage/emulated/0/Pictures/image.jpg
. Sieht aus wie die gleiche Datei, aber der openInputStream() löst eine FileNotFoundException aus.
Irgendeine Idee warum? Dies ist auf Android 6.0.1.
Haben Sie ein 'READ_EXTERNAL_STORAGE'- oder' WRITE_EXTERNAL_STORAGE' '' - Element in Ihrem Manifest? Wenn Ihre 'targetSdkVersion' 23 oder höher ist, haben Sie die Berechtigung zur Laufzeit angefordert? Siehe https://commonsware.com/blog/2015/08/31/hey-where-did-my-permission-go.html für mehr Möglichkeiten. –
CommonsWare
Ja, richtig. targetSdkVersion ist 23 und ich habe die Erlaubnis nicht angefordert. Vielen Dank. War verwirrt, weil es in der Vergangenheit funktionierte ... – farindk