मैं एंड्रॉयड oreo (8.0) एपीआई में एक छवि फ़ाइल नहीं बचा सकता 26.
कोड एपीआई स्तर में पूरी तरह से काम कर रहा है 25 (7.0) और मैं प्रलेखन "Android 8.0 Behavior Changes"एंड्रॉइड ओरेओ अपडेट में छवि फ़ाइल को सहेजने में असमर्थ। यह कैसे करना है?
यहाँ मेरी कोड
String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
File myrootDir = new File(root);
if (!myrootDir.exists()) {
myrootDir.mkdir();
}
File myDir = new File(root + "/Myimages");
if (!myDir.exists()) {
myDir.mkdir();
}
final String fname = System.currentTimeMillis()+"myimage.png";
File file = new File(myDir, fname);
if (file.exists())
file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
b.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
}catch (Exception e){
Log.e("MYAPP", "exception", e);
}
अपवाद FileNotFoundException, इस तरह के कोई फ़ाइल या निर्देशिका है। (लेकिन क्यों एंड्रॉयड n में नहीं?)
java.io.FileNotFoundException: /storage/emulated/0/Pictures/Myimages/1513151272243myimage.png (No such file or directory)
12-13 13:17:52.243 5839-5839/com.package.package W/System.err: at java.io.FileOutputStream.open0(Native Method)
12-13 13:17:52.243 5839-5839/com.package.package W/System.err: at java.io.FileOutputStream.open(FileOutputStream.java:287)
12-13 13:17:52.243 5839-5839/com.package.package W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:223)
12-13 13:17:52.243 5839-5839/com.package.package W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
12-13 13:17:52.243 5839-5839/com.package.package W/System.err: at com.package.package.DetailPage$12.run(DetailPage.java:737)
12-13 13:17:52.244 5839-5839/com.package.package W/System.err: at android.os.Handler.handleCallback(Handler.java:789)
12-13 13:17:52.244 5839-5839/com.package.package W/System.err: at android.os.Handler.dispatchMessage(Handler.java:98)
12-13 13:17:52.244 5839-5839/com.package.package W/System.err: at android.os.Looper.loop(Looper.java:164)
12-13 13:17:52.244 5839-5839/com.package.package W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6541)
12-13 13:17:52.244 5839-5839/com.package.package W/System.err: at java.lang.reflect.Method.invoke(Native Method)
12-13 13:17:52.244 5839-5839/com.package.package W/System.err: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
12-13 13:17:52.244 5839-5839/com.package.package W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
क्या आपके पास कोई अपवाद है? कृपया इसे यहां पोस्ट करें – Rinav
ओह, मुझे लगता है कि आपके पास खाली पकड़ ब्लॉक है, कृपया कैच ब्लॉक में कुछ लॉगिंग जोड़ें। बेस्ट प्रैक्टिस के रूप में, ** कभी भी कैच ब्लॉक को खाली न छोड़ें। हमेशा इसे संभाल लें ** – Rinav
मैं एंड्रॉइड एन में इस कोड का उपयोग कर छवि को सहेज सकता हूं। लेकिन एंड्रॉइड ओ, एनओपी :( –