Android L + Nexus 5: java.io.FileNotFoundException: open failed: EACCES (permiso denegado)

En primer lugar, voy a decir que he leído muchos otros puestos que coinciden con esta pregunta y ninguno de ellos ha funcionado para mí.

Estoy probando mi aplicación en mi dispositivo, un Nexus 5 con Android L. No está arraigada. Este mismo código funciona en un Android más antiguo, ejecutando la API 19.

Estoy intentando tomar una captura de pantalla y compartirla, usando este código:

View screen = getWindow().getDecorView().getRootView(); screen.setDrawingCacheEnabled(true); Bitmap bitmap = screen.getDrawingCache(); String filename = getScreenshotName(); String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + filename; File imageFile = new File(filePath); try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos); byte[] bitmapData = bos.toByteArray(); FileOutputStream fos = new FileOutputStream(imageFile); fos.write(bitmapData); fos.flush(); fos.close(); } catch (FileNotFoundException e) { Log.e("GREC", e.getMessage(), e); } catch (IOException e) { Log.e("GREC", e.getMessage(), e); } // share Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/png"); share.putExtra(Intent.EXTRA_STREAM, Uri.parse(filePath)); startActivity(Intent.createChooser(share, "Share Image")); 

Tengo estos permisos en AndroidManifest.xml :

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

Y me sale este error:

 java.io.FileNotFoundException: /storage/emulated/0/2014-09-14.png: open failed: EACCES (Permission denied) 

En esta línea:

 FileOutputStream fos = new FileOutputStream(imageFile); 

También he intentado otras 10 formas de obtener un filePath, y ahora sospecho que este es un dispositivo / Android L problema.

¿Alguna idea de lo que está pasando?

  • Android Debuigging con Luna + Nexus 5 + Android 5 falla
  • ¿Cómo configurar la configuración predeterminada de Android M en MTP en lugar de "cargar solo"?
  • Controlador inalámbrico Nexus 5 para BCM4339
  • Bluetooth descubrir / escanear código no funciona después de la actualización Android 6 en mi Nexus 5
  • La Android RatingBar tiene umbral "malo" para ciertos dispositivos, ¿arreglarlo?
  • Cómo corregir el texto que desborda TextView con el relleno de android: ellipsize = "marquee"
  • ChooserActivity no se encuentra con las pruebas Robotium mientras ChooserActivity se muestra en Nexus 5
  • Varios MediaPlayers no funcionan en Nexus 5
  • Android ResideMenu biblioteca, parte inferior del fragmento tiene problema de recorte
  • Nexus 5 (4.4.2) El LED de la linterna no se enciende
  • La tecla programable del menú no se muestra en dispositivos Android Lollipop
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.