У меня есть следующее намерение:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("text/*");
startActivityForResult(intent, DBOpenHelper.REQUEST_CODE_RESTORE);
Это намерение позволяет пользователю выбрать текстовый файл из нескольких вариантов. Например, он отлично работает с локальным хранилищем и Dropbox, и в обоих случаях я могу получить файл следующим образом:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if ((requestCode == DBOpenHelper.REQUEST_CODE_RESTORE)
&& (resultCode == Activity.RESULT_OK)) {
restoreFile = new File(data.getData().getPath());
restoreFileName = restoreFile.getName();
}
}
Локальное хранилище работает нормально, и Dropbox скопирует локальную копию файла на SD-карту и вернет правильный путь. Проблема в том, что если пользователь выбирает файлы с Google Диска. Когда они используют Google Диск, data.getData().getPath() возвращает что-то вроде: "/document/acc=1;doc=195" вместо возврата пути к локально сохраненному файлу. Как заставить Google Диск загрузить файл и вернуть путь? Я хочу, чтобы пользователь мог выбирать из любого доступного варианта хранения файлов.