Во-первых, я скажу, что я прочитал много других сообщений, которые соответствуют этому вопросу, и ни один из них не работал у меня.
Я тестирую свое приложение на своем устройстве Nexus 5 под управлением Android L. Оно не имеет root-прав. Этот же код работает на более старой версии Android с API 19.
Я пытаюсь сделать снимок экрана и поделиться им, используя этот код:
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"));
У меня есть эти разрешения в AndroidManifest.xml
:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
И я получаю эту ошибку:
java.io.FileNotFoundException: /storage/emulated/0/2014-09-14.png: open failed: EACCES (Permission denied)
В этой строке:
FileOutputStream fos = new FileOutputStream(imageFile);
Я также пробовал 10 других способов получить путь к файлу, и теперь я подозреваю, что это проблема устройства/Android L.
Есть идеи, что происходит?
getExternalFilesDir()
для теста. - person greenapps   schedule 15.09.2014null
в качестве значения файла - person Shreyans   schedule 16.09.2014filePath
.getExternalFilesDir()
возвращает ноль. - person Shreyans   schedule 16.09.2014