Ich bekomme Bild von Galerie/Capture mit Kamera. dann möchte ich das Bild bei Bedarf ändern und es an der gleichen Stelle speichern. Dazu verwende ich den folgenden Code:Dateieinschränkungen in android Nougat
File file = new File(photoLocation);
file.setWritable(true);
try {
if(ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.WRITE_EXTERNAL_STORAGE)==PackageManager.PERMISSION_GRANTED) {
FileOutputStream fileOutputStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
}else{
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
}
Leider bekomme ich
FileNotFound error (permission denied)
ich den gleichen Code auf Android 4 Gerät ausprobiert und es funktioniert ok so gehe ich davon aus, weil die Dateizugriffsbeschränkungen ist in android 7.
Wie kann ich jetzt in Datei schreiben?
Auch der Fehler:
W/System.err: java.io.FileNotFoundException: /storage/3061-6133/DCIM/Camera/20161213_081733.jpg (Permission denied) 12-22 23:55:00.269 28524-28736/com.hadas.yotam.manchworkers W/System.err: at java.io.FileOutputStream.open(Native Method) 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err: at java.io.FileOutputStream.(FileOutputStream.java:221) 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err:
at java.io.FileOutputStream.(FileOutputStream.java:169) 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err:
at com.hadas.yotam.manchworkers.ProductActivity$BitmapGetter.doInBackground(ProductActivity.java:465) 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err: at com.hadas.yotam.manchworkers.ProductActivity$BitmapGetter.doInBackground(ProductActivity.java:410) 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:304) 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err:
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err:
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err: at java.lang.Thread.run(Thread.java:761)
Wohin genau 'Datei' zeigt? IOW, was ist der Wert von "photoLocation"? – CommonsWare
@CommonsWare mein Fehler vergessen, den Fehler hinzuzufügen, edited ich den Beitrag mit dem Fehler (Ort ist in der ersten Zeile Fehler) –
Ich weiß nicht, wie Sie diesen Pfad ('/ Speicher/3061-6133/DCIM/Kamera/20161213_081733.jpg'). Es sieht so aus, als ob es sich um einen Wechseldatenträger handelt und [Sie haben seit Android 4.4 weder Lese- noch Schreibzugriff auf beliebige Speicherorte auf Wechseldatenträgern] (https://commonsware.com/blog/2014/04/09/storage-situation- Wechselspeicher.html). – CommonsWare