2016-08-16 6 views
0

я поставил все uses-permission параметры вне тега приложения в моем Android manifest файл здесь:Я получаю java.io.FileNotFoundException при попытке захвата экрана

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

Но когда я пытаюсь захватить на экране появляется следующая ошибка:

java.io.FileNotFoundException: /storage/emulated/0/DCIM/Camera/EMOJI_2-7-116_22538.jpg: open failed: EACCES (Permission denied)

Это метод захвата экрана.

private void captureScreen() { 
     Date now = new Date(); 
     now.getYear(); 
     now.getMonth(); 
     now.getDay(); 

     View v = findViewById(R.id.rl); 
     v.setDrawingCacheEnabled(true); 
     Bitmap bitmap = v.getDrawingCache(); 
     String dest = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) 
       + File.separator + "Camera" + File.separator + "EMOJI_" + 
       now.getDay() + "-" + now.getMonth() + "-" + now.getYear() + "_" + now.getHours() + now.getMinutes() + now.getSeconds() + ".jpg"; 
     File file = new File(dest); 
     try { 
      FileOutputStream stream = new FileOutputStream(file); 
      bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
      stream.flush(); 
      stream.close(); 
      Toast.makeText(getApplicationContext(), "Saved !", Toast.LENGTH_SHORT).show(); 
     } catch (IOException e) { 
      Toast.makeText(getApplicationContext(), "An error occured", Toast.LENGTH_LONG).show(); 
     } finally { 
      v.setDrawingCacheEnabled(false); 
     } 

     // Scan the image to make it appear in gallery 
     MediaScannerConnection.scanFile(this, new String[]{file.getPath()}, new String[]{"image/jpeg"}, null); 
    } 

Помогите мне решить эту проблему?

+0

Первый и можно проверить, что у получить в Dest –

+0

от Dest следующая строка приходит: «/storage/emulated/0/DCIM/Camera/EMOJI_2-7-116_22538.jpg» –

+0

Попробуйте добавить разрешение на чтение 'READ_EXTERNAL_STORAGE'. Какая версия API предназначена для вашего приложения? – HeatfanJohn

ответ

0

Вы пытаетесь получить доступ к файлу, который в настоящее время не существует в системе.

Вместо использования ..

OutputStream out = new FileoutputStream(dest); 

// На этот раз Instantiate FileOutputStream Объект с строковый объект не объектный файл

+0

Complet ерунда. И он пытается его создать. Не доступ к существующему. – greenapps

0

попробовать на этом пути

File sd = Environment.getExternalStorageDirectory(); 
File image = new File(sd+filePath, imageName); 
BitmapFactory.Options bmOptions = new BitmapFactory.Options(); 
Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath(),bmOptions); 
bitmap = Bitmap.createScaledBitmap(bitmap,parent.getWidth(),parent.getHeight(),true); 
imageView.setImageBitmap(bitmap); 

Может помочь вам полный.

+0

Я пробовал все решения, но ничего не работает, моя целевая версия sdk - 24. –

Смежные вопросы