Я звоню MadiaStore
вот так (после запроса разрешений):
Intent intent = new Intent();
intent.setType("application/zip");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_RESTORE_REQUEST);
Затем я перехожу на Google Drive и выбираю файл, и Uri
возвращается в onActivityResult
.
Затем я пытаюсь получить Cursor
, запрашивая преобразователь контента, как показано ниже:
// I'm doing this to get the file size etc
Cursor mCursor = context.getContentResolver().query(mUri, null, null, null, null);
Проблема в том, что файл еще не доступен (Google Drive находится в процессе скачать его). Пользовательский интерфейс блокируется, отображая черный экран, пока файл не будет доступен, а затем приведенный выше вызов будет вызван / вызван.
Я попытался вызвать вышеупомянутый в AsyncTask
- Это работает для блокировки пользовательского интерфейса , но вызывает вышеупомянутое только после загрузки.
Некоторые провайдеры, такие как Dropbox, сначала загружают контент перед возвратом Uri
.
Мой вопрос:
Есть ли способ, которым мы можем предотвратить это (например, получить прогресс загрузки файла, по крайней мере, )? Если нет, что вы предлагаете?
Обратите внимание - я использовал Google Диск только в качестве примера, OneDrive имеет ту же проблему.
Также - Вы можете воспроизвести это, очистив данные приложения Google Drive, затем вызов выше. Это заметно заметно при выборе размера файла 5МБ>