Использование инфраструктуры доступа к хранилищу для создания файла

Недавно я получил отчет о сбое от пользователя, который пытался создать резервную копию базы данных с помощью Storage Access Framework на устройстве с леденцами.

Исключение:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CREATE_DOCUMENT cat=[android.intent.category.OPENABLE] typ=*/* (has extras) }

Мой код:

Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_TITLE, "Backup.db");
intent.setType("*/*");
startActivityForResult(intent, REQUEST_CODE_BACKUP_SAF);

Вопрос:

Все ли устройства v19+ действительно поддерживают Storage Access Framework? Как мы должны поступать в таких случаях?

[ОБНОВЛЕНИЕ]

Получено 4 дополнительных отчета о сбоях с разных устройств.


person erkan.molla.dev    schedule 26.08.2015    source источник
comment
Все ли устройства v19+ действительно поддерживают Storage Access Framework? -- это часть стандартного Android AFAIK. Возможно, на этом устройстве был запущен какой-то испорченный мод ПЗУ.   -  person CommonsWare    schedule 27.08.2015
comment
@CommonsWare Спасибо за ваш комментарий! Да, это часть стандартного Android API. Но я получил еще два идентичных отчета о сбоях. Все сообщения с разных устройств.   -  person erkan.molla.dev    schedule 07.09.2015


Ответы (1)


Возможно, это может быть полезно для кого-то еще, у кого была такая же проблема, так что вот как я решил свою проблему.

Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_TITLE, "Backup.db");
intent.setType("*/*");
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivityForResult(intent, REQUEST_CODE_BACKUP_SAF);
} else {
    // start my custom file browser...
}
person erkan.molla.dev    schedule 11.10.2015