Файл чтения GET_CONTENT для Google Диска
У меня есть приложение для Android, которое использует общий доступ к файлам, используя облачные хранилища, такие как dropbox. Чтобы начать делиться, я бросаю android.intent.action.SEND
.
В показанном списке я вижу приложение Google Диск (ранее установленное), поэтому я пытаюсь отправить ему файл - он работает нормально, файл отображается в списке Диска.
Затем на другом устройстве я хочу прочитать этот файл. Я бросаю
android.intent.action.GET_CONTENT
намерение, выберите "Диск", а затем не знаете, как добраться до файла. Я получаю Uri что-то вроде этого:
content://com.google.android.apps.docs.files/exposed_content/6jn9cnzdJbDywpza%2BlW3aA%3D%3D%0A%3BRV%2FaV94o%2FCcW4HGBYArtwOdHqt%2BrsYO4WmHcs6QWSVwp%2FXogkRAgit7prTnfp00a%0A
который я не знаю, как преобразовать в физический путь к файлу. Как я могу получить содержимое этого файла?
Я играл вокруг поставщика контента и мог получить имя файла, но не полный путь или что-то еще.
Для dropbox я получаю стили стиля file://
, прямо и просто, хорошо работает.
Ответы
Ответ 1
Он отправляет вам uri поставщика контента, который вы можете использовать с ContentResolver, например, например:
getContentResolver().query(Uri contentUri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
Изменить: для получения реальных имен путей используйте приведенное ниже решение
Android: Получение URI файла из URI содержимого?
Ответ 2
У меня тоже была проблема. Я использовал следующий код, чтобы получить путь к файлу из файла Google Диска. Он работает для SkyDrive, а также для DropBox.
String filePath = null;
Uri _uri = data.getData();
Log.d("", "URI = " + _uri);
if(_uri != null && "content".equals(_uri.getScheme())) {
Cursor cursor = this.getContentResolver().query(_uri, new String[] { android.provider.MediaStore.Files.FileColumns.DATA }, null, null, null);
cursor.moveToFirst();
filePath = cursor.getString(0);
cursor.close();
} else {
filePath = _uri.getPath();
}
Log.d("", "Chosen path = " + filePath);
Я использую намерение выбрать файл. Вот мой код, чтобы выбрать файл.
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
String strType = "*/*";
intent.setDataAndType(Uri.parse(dir.getAbsolutePath()), strType);
startActivityForResult(intent, PICKFILE_RESULT_CODE);
Мой код отлично работает, и когда я получаю файл из внутренней или внешней памяти. Я хочу получить файл с Google Диска с тем же кодом.