google android google-drive-api file-get-contents

android - Google Drive GET_CONTENT intento leer el archivo



android google drive (2)

Le está enviando una uri de proveedor de contenido que puede usar con ContentResolver, por ejemplo, como:

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

Edición: para obtener nombres de ruta reales use la solución que se proporciona a continuación

Android: ¿Obtener un archivo URI de un contenido URI?

Tengo una aplicación en Android que comparte archivos mediante el almacenamiento en la nube como Dropbox. Para empezar a compartir lanzo android.intent.action.SEND . En la lista que aparece, veo la aplicación Google Drive (instalada anteriormente), así que trato de enviarle el archivo. Funciona bien, el archivo aparece en la lista de unidades.

Luego, en otro dispositivo quiero leer este archivo. android.intent.action.GET_CONTENT intención de android.intent.action.GET_CONTENT , elijo Drive y luego no sé cómo llegar al archivo. Recibo un Uri algo como esto:

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

que no sé cómo transformar a la ruta del archivo físico. ¿Cómo podría obtener el contenido del archivo de esto?

Jugué con el proveedor de contenido y puedo obtener el nombre del archivo, pero no la ruta completa ni nada más.

Para el dropbox obtengo el file:// style uri, directo y simple, funciona bien.


También me enfrentaba al mismo problema. Usé el código de seguimiento para obtener la ruta del archivo desde el archivo de Google Drive. Funciona para SkyDrive y también para 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);

Estoy usando la intención de elegir el archivo. Aquí está mi código para elegir el archivo.

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

Mi código funciona bien y cuando obtengo un archivo de la memoria interna o externa. Quiero obtener el archivo de Google Drive con el mismo código.