Файл чтения 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:// стиль uri, простой и простой, работает хорошо.

Solutions Collecting From Web of "Файл чтения GET_CONTENT для Google Диска"

Он отправляет вам uri поставщика контента, который вы можете использовать с ContentResolver, например, например:

 getContentResolver().query(Uri contentUri, String[] projection, String selection, String[] selectionArgs, String sortOrder); 

Изменить: для получения имен реальных путей используйте приведенное ниже решение

Android: Получение URI файла из URI контента?

Я также столкнулся с той же проблемой. Я использовал следующий код, чтобы получить путь к файлу из файла 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 Диска с тем же кодом.