Android Google Drive SDK – cómo mostrar la lista de archivos en la carpeta seleccionada

Estoy luchando para que mi código funcione.

Quiero que mi aplicación (cuando se hace clic en un botón) muestre todas las carpetas (y archivos) en la carpeta raíz de la unidad. Pero parece que esto no es posible, ya que aunque he autorizado la aplicación utilizando Ouath2, la aplicación sólo tiene acceso a los archivos y la carpeta que el usuario selecciona.

El comportamiento es extraño en que cuando se abre el selector de carpetas, sólo muestra el contenido de esa carpeta si el contenido es carpetas. No mostrará ningún archivo en absoluto.

¿Podría un experto mirar por favor mi código y decirme a dónde voy mal?

Estoy usando la actividad de PickFolderWithOpener , para conseguir el driveId. Devuelve un ID de unidad basado en la selección de usuarios del selector.

  DriveId driveId = (DriveId) data.getParcelableExtra( OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID); 

¿Es eso lo que se devuelve aquí, la carpeta Drive ID? Entonces necesito llamar a la intención ListFilesInFolderActivity . Supongo que tengo que pasar este driveID en la llamada de intención? Si formateo el DriveID como una cadena y lo paso, falla con el "No se puede encontrar DriveId. ¿Está autorizado para ver este archivo?" mensaje.

Así que lo que estoy haciendo es pasar el ResourceID.

 Intent intent = new Intent(this, ListFilesInFolderActivity.class); intent.putExtra("DriveID", driveId.getResourceId()); startActivity(intent); 

¿Qué necesita ser utilizado en ListFilesInFolderActivity? ¿El identificador de unidad o resourceID? Aquí es lo que tengo en la ListFilesInFolderActivity?

 Bundle extras = getIntent().getExtras(); folderId= extras.getString("DriveID"); // this is the resourceID Drive.DriveApi.fetchDriveId(getGoogleApiClient(), folderId) .setResultCallback(idCallback); final private ResultCallback<DriveIdResult> idCallback = new ResultCallback<DriveIdResult>() { @Override public void onResult(DriveIdResult result) { if (!result.getStatus().isSuccess()) { showMessage("Cannot find DriveId. Are you authorized to view this file?"); return; } DriveFolder folder = Drive.DriveApi.getFolder(getGoogleApiClient(), result.getDriveId()); showMessage("Result driveId is: " + result.getDriveId()); folder.listChildren(getGoogleApiClient()) .setResultCallback(metadataResult); } }; 

Lo que parece funcionar, pero sólo muestra carpetas en la carpeta seleccionada. No muestra los archivos. ¿Por qué folder.listChildren(getGoogleApiClient()) no lista los archivos también !?

Espero que esto sea algo obvio que me falta.

No puede hacer esto con el nuevo SDK ya que solo permite el acceso SCOPE_FILE.

¿Es esto por qué? "Nota: Actualmente, la API de Google Drive para Android sólo admite los ámbitos de autorización drive.file y drive.appdata. Si su aplicación requiere permisos o funciones adicionales que todavía no están disponibles en Drive API de Android, debe utilizar el Cliente Java de API de Google.

  • Google Drive + ACTION_GET_CONTENT
  • ¿Está en peligro la eliminación gradual de la función de enlace de host de Google Drive?
  • Subir archivo de texto a Google Drive mediante Android
  • API de Google Drive \ Docs para Android
  • ¿Es Google Drive RealTime API para Android?
  • SDK de Google Drive: carga de imagen, reconocimiento óptico de caracteres, resultado de la descarga
  • Error: GooglePlayServicesUtil: Se ha producido un error interno. Consulte los registros para obtener información detallada. ¿Cómo puedo solucionar esto?
  • Abra la extensión de archivo personalizada de Google Drive en android
  • Intent.ACTION_GET_CONTENT con Google Drive
  • ¿Cómo descargar el archivo de Google Drive con Drive.API?
  • Google Drive GET_CONTENT archivo de lectura de intenciones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.