Marshmallow para Android 6.0. Não é possível gravar no cartão SD
Eu tenho um aplicativo que usa armazenamento externo para armazenar fotografias. Conforme necessário, em seu manifesto, as seguintes permissões são solicitadas
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
e usa o seguinte para recuperar o diretório necessário
File sdDir = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd", Locale.US);
String date = dateFormat.format(new Date());
storageDir = new File(sdDir, getResources().getString(
R.string.storagedir)
+ "-" + date);
// Create directory, error handling
if (!storageDir.exists() && !storageDir.mkdirs()) {
... fails here
O aplicativo funciona bem no Android 5.1 a 2.3; está no Google Play há mais de um ano.
Após a atualização de um dos meus telefones de teste (Android One) para 6, agora está retornando um erro ao tentar criar o diretório necessário "/ sdcard / Pictures / myapp-yy-mm".
O cartão SD está configurado como "Armazenamento portátil". Eu formatei o cartão SD. Eu substituí. Eu reiniciei. Tudo em vão.
Além disso, a funcionalidade de captura de tela integrada do Android (via volume Power + Lower) está falhando "devido ao espaço de armazenamento limitado ou não é permitido pelo aplicativo ou por sua organização".
Alguma ideia?