Начиная с Android 6.0, сторонние приложения не имеют возможности видеть содержимое SDCard.
В Android 6.0, сторонние приложения не имеют доступа к sdcard_r и sdcard_rw GID. Вместо этого доступ контролируется установкой только соответствующего представления времени выполнения для этого приложения. Кросс-пользователь взаимодействия блокируются с использованием всех GID.
https://source.android.com/devices/storage/
В качестве дополнительной информации, Android 6,0 вводит Adoptable Storage и Runtime Permissions которые накладывают ограничения на взаимодействие с хранением устройства.
Надеюсь, это поможет вам.
Update
касается того, как получить доступ к файлу из DDMS на Android 6.0. Это действие не допускается. Если вам нужно получить доступ к файлу из вашего приложения, вы можете использовать этот пример исходного кода:
@Override
protected void onCreate(Bundle savedInstanceState) {
mPermissions = new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE };
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
boolean isAllow = ContextCompat.checkSelfPermission(this, mPermissions[0]) == PackageManager.PERMISSION_GRANTED;
if (!isAllow) {
if (shouldShowRequestPermissionRationale(mPermissions[0])) {
// There is you need to display confirmation dialog about why you need to get this permission.
if (confirm("You need to copy database to device's storage") == YES) {
requestPermissions(mPermissions, REQUEST_CODE_ASK_PERMISSIONS)
} else {
// User does not agree with your requirements
// You should decide how the app will work in this case.
message("You can't use this app!");
finish();
}
return;
}
requestPermissions(mPermissions, REQUEST_CODE_ASK_PERMISSIONS);
}
} else {
runTheApp();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_PERMISSIONS:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
runTheApp();
} else {
message("You can't use this app!")
}
}
break;
case REJECT_CODE_PERMISSIONS:
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
Это не отвечает на вопрос, верно? Что может быть реальным решением? – Stan
Привет Стэн. Проверьте мое обновление. Надеюсь, это поможет вам. –
Я не думаю, что речь идет о программировании доступа к файлам, речь идет о страшном «улучшении» в среде IDE обычных разработчиков, которая сейчас неспособна передавать данные с устройств. Конечно, как разработчик, у меня есть возможность самостоятельно разработать менеджер файлов adb, но это всего лишь хак, который заставляет меня думать, что Google сошел с ума. – Stan