2016-12-05 2 views
0

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

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Pictures/Pictures.jpg: Не удалось открыть: EACCES (Отказано в)

И вот код:

public void savePhoto(View view) { 
     if(currentBitmap != null) { 
      File storageLoc = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
      File file = new File(storageLoc, "Pictures.jpg"); 

      try { 
       FileOutputStream fos = new FileOutputStream(file); 
       currentBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
       fos.flush(); 
       fos.close(); 

       Context context = getApplicationContext(); 

       Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
       scanIntent.setData(Uri.fromFile(file)); 
       context.sendBroadcast(scanIntent); 

       Toast.makeText(getApplicationContext(), "Your image has been saved!", Toast.LENGTH_SHORT).show(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } else { 
      Toast.makeText(getApplicationContext(), "No image taken!", Toast.LENGTH_SHORT).show(); 
     } 
    } 

Я использую API15, если у него есть что-то с этим делать. Остальная часть моего кода работает хорошо, не сохраняя изображения. Если кто-то увидит эту проблему, я был бы благодарен.

+0

ошибок указывают на FileOutputStream –

+2

Ваш андроид версия кажется быть выше Зефира. Необходимо проверить разрешение во время выполнения. Как показано в журнале, Permission denied. – UMESH0492

+0

Вы имеете в виду, что я должен проверить разрешения с помощью этого ContextCompat.checkSelfPermission()? –

ответ

1

Ваша версия для Android, кажется, выше Зефира. Необходимо проверить разрешение во время выполнения. Как показано в журнале, Permission denied.

Вы можете сделать это двумя способами

  1. Проверка разрешения на ContextCompat.checkSelfPermission() способ
  2. Объявив ANDROID_BUILD_TARGET_SDK_VERSION = 22 в Gradle
Смежные вопросы