Google Drive GET_CONTENT意图读取文件

我有一个应用程序在Android上做一些文件共享使用像保pipe箱一样的云存储。 开始分享我扔android.intent.action.SEND 。 在显示的列表中,我会看到Google Drive应用程序(以前已安装),所以我尝试将文件发送给它 – 它工作正常,该文件出现在“驱动器”列表中。

然后,在另一台设备上,我想读这个文件。 我抛出了android.intent.action.GET_CONTENT意图,select驱动器,然后不知道如何去文件。 我收到一个这样的Uri:

 content://com.google.android.apps.docs.files/exposed_content/6jn9cnzdJbDywpza%2BlW3aA%3D%3D%0A%3BRV%2FaV94o%2FCcW4HGBYArtwOdHqt%2BrsYO4WmHcs6QWSVwp%2FXogkRAgit7prTnfp00a%0A 

我不知道如何转换为物理文件path。 我怎么能从这个文件的内容?

我玩过内容提供商,可以得到文件名,但不是完整的path或其他任何东西。

对于保pipe箱,我得到的file://风格uri,直接和简单,运作良好。

Solutions Collecting From Web of "Google Drive GET_CONTENT意图读取文件"

它向您发送您可以与ContentResolver一起使用的内容提供者的URI,例如:

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

编辑:获取真正的path名称使用下面提供的解决scheme

Android:从内容URI获取文件URI?

我也面临同样的问题。 我使用后续代码从Google云端硬盘文件获取文件path。 它适用于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); 

我正在使用意图来select文件。 这是我的代码来select文件。

 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); String strType = "*/*"; intent.setDataAndType(Uri.parse(dir.getAbsolutePath()), strType); startActivityForResult(intent, PICKFILE_RESULT_CODE); 

我的代码工作正常,当我从内部或外部存储器获取文件。 我想从Google Drive获取具有相同代码的文件。