Я пытаюсь сохранить растровое изображение в моей SDcard с помощью Android Studio - PullRequest
0 голосов
/ 04 февраля 2019

Пожалуйста, помогите мне решить эту проблему в моем коде, я хотел бы сохранить растровое изображение (newimage) на SD-карту в моем телефоне (Galaxy j7), но я получаю сообщение об ошибке (нет такого файла или каталога)

File filepath;
    filepath = Environment.getExternalStorageDirectory();

   File  dir = new File(filepath.getAbsolutePath()+"/save image");
    dir.mkdirs();
    File  file = new File(dir,"myimage.png");
    Toast.makeText(MainActivity.this,"image saved to SD",Toast.LENGTH_LONG).show();
   try{

        OutputStream stream ;

        stream = new FileOutputStream(file);

        newimage.compress(Bitmap.CompressFormat.PNG,100,stream);

        stream.flush();

        stream.close();

    }catch (IOException e) 
    {
        e.printStackTrace();
    }

    // Parse the saved image path to uri
    Uri savedImageURI = Uri.parse(filepath.getAbsolutePath());

    // Display the saved image to ImageView
  //  imagev.setImageURI(savedImageURI);

    // Display saved image uri to TextView
    tv_saved.setText("Image saved in external storage.\n" + savedImageURI);

сообщение об ошибке:

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/save image/myimage.png (No such file or directory)

Я добавил разрешение записи в manifest.xml следующим образом:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="21" />
<uses-sdk
            android:minSdkVersion="9"
    android:targetSdkVersion="21"/>

1 Ответ

0 голосов
/ 04 февраля 2019

Я думаю, что нет проблем с вашими кодами, проблема в версии Android, на которой вы компилируете свой проект.В более поздних версиях Android вы должны реализовать разрешение во время выполнения для разрешения хранения.

См. Ответ здесь , который решит вашу проблему.

Редактировать: Существует еще одна проблема с вашей реализацией, которую я обнаружил после публикации своего ответа.Прежде чем пытаться сохранить изображение в каталоге с именем сохранить изображение , необходимо создать эту папку с помощью

String folder_main = "save image"; File f = new File(Environment.getExternalStorageDirectory(), folder_main); if(!f.exists()) {f.mkdirs();}

.
...