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.
- Guardar archivo en una carpeta específica con Google Drive SDK
- ID de cliente del SDK de Google Drive
- ¿Cómo crear archivos para ir a qué cuenta con las API de Google Drive al realizar la autenticación con una cuenta de servicio?
- Excepción de SDK de Google Drive
- Get filepath desde la unidad de google en Lollipop (MediaStore.MediaColumns.DATA == null)
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.
- ¿Cómo configurar las credenciales de Google Drive en la aplicación de Android?
- Notificaciones de la API REST de Google Drive no funcionan para cambios en la carpeta de aplicaciones
- Error de ConnectionRequire de la API de Google Drive para Android
- Comprobación de la sincronización de archivos mediante Drive API
- Autorizar mi aplicación para usar una carpeta existente
- Carpeta de datos de aplicaciones de Google Drive para Android que no incluye todos los niños
- ¿GoogleAccountCredential proporciona token de actualización?
- Android: solicitud HTTP de Google Drive
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.
- SurfaceView en blanco al reproducir vídeo usinng mediaplayer
- Androide – superponer imágenes (jugar a las cartas)