#android #android-file #android-image
#Android #android-file #android-изображение
Вопрос:
Я хотел бы записать Bitmap
объект в файл. Это мой код:
File f = new File(path "-bw.jpg");
OutputStream fileStream = new BufferedOutputStream(new FileOutputStream(path "-bw.jpg"));
image.getBitmap().compress(Bitmap.CompressFormat.JPEG, 100, fileStream);
fileStream.close();
Ниже приведена трассировка стека:
1-11 09:56:05.553: D/dalvikvm(277): GC_EXTERNAL_ALLOC freed 385 objects / 15832 bytes in 69ms
11-11 09:56:05.733: D/dalvikvm(277): GC_EXTERNAL_ALLOC freed 32 objects / 34048 bytes in 51ms
11-11 09:56:05.923: E/Save error(277): /mnt/sdcard/Water lilies-bw.jpg (Permission denied)
11-11 09:56:05.923: E/Save error(277): java.io.FileNotFoundException: /mnt/sdcard/Water lilies-bw.jpg (Permission denied)
11-11 09:56:05.923: E/Save error(277): at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method)
11-11 09:56:05.923: E/Save error(277): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152)
11-11 09:56:05.923: E/Save error(277): at java.io.FileOutputStream.<init>(FileOutputStream.java:97)
11-11 09:56:05.923: E/Save error(277): at java.io.FileOutputStream.<init>(FileOutputStream.java:168)
11-11 09:56:05.923: E/Save error(277): at java.io.FileOutputStream.<init>(FileOutputStream.java:147)
11-11 09:56:05.923: E/Save error(277): at it.bwpp.activity.ConvertPictureActivity.convertImage(ConvertPictureActivity.java:75)
11-11 09:56:05.923: E/Save error(277): at it.bwpp.activity.ConvertPictureActivity.access$6(ConvertPictureActivity.java:68)
11-11 09:56:05.923: E/Save error(277): at it.bwpp.activity.ConvertPictureActivity$1.onClick(ConvertPictureActivity.java:58)
11-11 09:56:05.923: E/Save error(277): at android.view.View.performClick(View.java:2408)
11-11 09:56:05.923: E/Save error(277): at android.view.View$PerformClick.run(View.java:8816)
11-11 09:56:05.923: E/Save error(277): at android.os.Handler.handleCallback(Handler.java:587)
11-11 09:56:05.923: E/Save error(277): at android.os.Handler.dispatchMessage(Handler.java:92)
11-11 09:56:05.923: E/Save error(277): at android.os.Looper.loop(Looper.java:123)
11-11 09:56:05.923: E/Save error(277): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-11 09:56:05.923: E/Save error(277): at java.lang.reflect.Method.invokeNative(Native Method)
11-11 09:56:05.923: E/Save error(277): at java.lang.reflect.Method.invoke(Method.java:521)
11-11 09:56:05.923: E/Save error(277): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-11 09:56:05.923: E/Save error(277): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-11 09:56:05.923: E/Save error(277): at dalvik.system.NativeStart.main(Native Method)
11-11 09:56:05.923: I/save image(277): End save image...
В чем ошибка? Спасибо!
Ответ №1:
Я думаю, вы забыли добавить android.permission.WRITE_EXTERNAL_STORAGE
разрешение для вас AnroidManifest.xml .
Комментарии:
1. Как я могу выполнять запись в общедоступном хранилище внутренней области? Например, во внутренней папке pictures.
2. Я полагаю, это то, что вы ищете: использование внутреннего хранилища .
Ответ №2:
Это вопрос 10-летней давности. С тех пор многое изменилось.
Объявления разрешений в файле манифеста сейчас недостаточно. вам необходимо запросить разрешения во время выполнения.
Даже следующее разрешение теперь устарело.
android.разрешение.WRITE_EXTERNAL_STORAGE
Обратитесь к полной документации здесь.