Android, сохранить изображение в виде файла png

Я ожидал, что код ниже сохранит изображение на моей локальной SD-карте, но когда я запустил приложение и запускаю метод saveCanvasImage (), он этого не делает. Когда я смотрю в LogCat, я могу найти запись System.err. В тексте говорится:

Java.io.FileNotFoundException: /mnt/sdcard/drawPic1.png: open failed: EACCES (разрешено разрешение)

Я думал, что это создаст новый файл png и сохранит его в каталоге. Я, очевидно, ошибаюсь. Что я могу изменить здесь, чтобы заставить его работать?

public void saveCanvasImage() { Log.d("bitmap","strm"); tv.setDrawingCacheEnabled(true); Bitmap bm = tv.getDrawingCache(); File fPath = Environment.getExternalStorageDirectory(); File f = null; f = new File(fPath, "drawPic1.png"); try { FileOutputStream strm = new FileOutputStream(f); bm.compress(CompressFormat.PNG, 80, strm); strm.close(); } catch (IOException e){ e.printStackTrace(); } } 

Вы дали разрешение?

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Вы уверены, что добавили это разрешение для записи на внешнее хранилище

 android.permission.WRITE_EXTERNAL_STORAGE 

Добавьте следующие разрешения в разрешение файла манифеста вашего проекта

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Я думаю, вы забыли создать новый файл!
Используйте это вместо этого и установите разрешение в манифесте:

 public void saveCanvasImage(Bitmap b) { File f = new File(Environment.getExternalStorageDirectory().toString() + "/img.png"); f.createNewFile(); // your mistake was at here try { FileOutputStream fos = new FileOutputStream(f); b.compress(CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); }catch (IOException e){ e.printStackTrace(); } } 

И разрешение:

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Вы можете использовать этот код

 Bitmap bbicon; bbicon=BitmapFactory.decodeResource(getResources(),R.drawable.bannerd10); //ByteArrayOutputStream baosicon = new ByteArrayOutputStream(); //bbicon.compress(Bitmap.CompressFormat.PNG,0, baosicon); //bicon=baosicon.toByteArray(); String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); OutputStream outStream = null; File file = new File(extStorageDirectory, "er.PNG"); try { outStream = new FileOutputStream(file); bbicon.compress(Bitmap.CompressFormat.PNG, 100, outStream); outStream.flush(); outStream.close(); } catch(Exception e) { } 

Наряду с разрешениями.