Creación de una carpeta dentro de una carpeta en google drive android
Quiero integrar la unidad de Google con mi aplicación He registrado mi aplicación en Google Developers Console. Conseguí una muestra de https://github.com/googledrive/android-demos . Por esto puedo crear un archivo, una carpeta en la carpeta de la raíz de la impulsión de Google pero el problema es que no podría crear un archivo o una carpeta dentro de un carpeta existente. En tal caso, tengo un brindis "No se puede encontrar DriveId. ¿Está autorizado para ver este archivo?" Es decir no puedo conseguir el driveID
public class CreateFolderInFolderActivity extends BaseDemoActivity { @Override public void onConnected(Bundle connectionHint) { super.onConnected(connectionHint); Drive.DriveApi.fetchDriveId(getGoogleApiClient(), EXISTING_FOLDER_ID) .setResultCallback(idCallback); } final ResultCallback<DriveIdResult> idCallback = new ResultCallback<DriveIdResult>() { @Override public void onResult(DriveIdResult result) { if (!result.getStatus().isSuccess()) { showMessage(result.getStatus().toString()); showMessage("Cannot find DriveId. Are you authorized to view this file?"); return; } DriveFolder folder = Drive.DriveApi .getFolder(getGoogleApiClient(), result.getDriveId()); MetadataChangeSet changeSet = new MetadataChangeSet.Builder() .setTitle("MyNewFolder").build(); folder.createFolder(getGoogleApiClient(), changeSet) .setResultCallback(createFolderCallback); } }; final ResultCallback<DriveFolderResult> createFolderCallback = new ResultCallback<DriveFolderResult>() { @Override public void onResult(DriveFolderResult result) { if (!result.getStatus().isSuccess()) { showMessage("Problem while trying to create a folder"); return; } showMessage("Folder successfully created"); } }; }
No puedo encontrar ninguna documentación apropiada para esto. Plz me ayudan a dónde me voy mal o si tengo que incluir otros permisos
- Vista de archivo de Android Drive de Google Drive
- ¿Es Google Drive RealTime API para Android?
- ¿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?
- Carpeta de datos de aplicaciones de Google Drive para Android que no incluye todos los niños
- La API de Google Drive no funciona bien con ProGuard (NPE)
- ¿Para el acceso a API de Google, puedo crear varios ID de cliente para el mismo nombre de paquete de Android?
- No se puede crear un archivo dentro de una carpeta pública en Google Drive
- Iniciar sesión en Google Drive en Android sin agregar la cuenta de Google al dispositivo
- Archivo de icono de Google Drive. No puedo compilar el proyecto Android de Eclipse
- Google Drive GET_CONTENT archivo de lectura de intenciones
- Autorización de cuenta para Google Drive Api
- Android Obtener la ruta de acceso de Uri a un archivo de Google Drive
- Uso de la API de Google Drive: cómo mostrar una lista de carpetas en la carpeta raíz
Puedes echar un vistazo aquí: en el método ' createTree () ', hay una creación de carpeta dentro de una carpeta.
Hay tres entidades de ID de unidad diferentes en la nueva API de Google Drive para Android (GDAA)
- El objeto de tipo DriveID – el que obtiene de los métodos y el uso en su código
- Una cadena que se obtiene de encodeToString () y pasa a decodeFromString () – se utiliza para guardar en la aplicación (almacenamiento en caché, por ejemplo)
- Una cadena que se obtiene de getResourceId () y pasa a fetchDriveId () – la que se ve en la dirección html de un archivo.
Ambos 2 y 3 identificadores son cadenas, por lo que pueden ser confundidos. El identificador 2 es más rápido al recuperar ID de unidad (a través de decodeFromString ()). Identificador 3 es más lento para recuperar (a través de fetchDriveId ()), pero útil si necesita tomar su ID en otro lugar (Apps Script, por ejemplo).
Véase también: SO 21800257
¿Qué es EXISTING_FOLDER_ID? Si está intentando ejecutar la muestra directamente sin haber realizado ningún cambio, esto no funcionará.
Debe cambiar EXISTING_FOLDER_ID al identificador de recurso de una carpeta a la que tiene acceso su aplicación. Esta podría ser una carpeta que tu aplicación creó en la raíz.
Primero cree la carpeta usando creatreeTree ()
Entonces ejecute una consulta de búsqueda para obtener id de create public static ArrayList<ContentValues> search(String prnId, String titl, String mime) { ArrayList<ContentValues> gfs = new ArrayList<>(); if (mGOOSvc != null && mConnected) try { // add query conditions, build query String qryClause = "'me' in owners and "; if (prnId != null) qryClause += "'" + prnId + "' in parents and "; if (titl != null) qryClause += "title = '" + titl + "' and "; if (mime != null) qryClause += "mimeType = '" + mime + "' and "; qryClause = qryClause.substring(0, qryClause.length() - " and ".length()); Drive.Files.List qry = mGOOSvc.files().list().setQ(qryClause) .setFields("items(id,mimeType,labels/trashed,title),nextPageToken"); String npTok = null; if (qry != null) do { FileList gLst = qry.execute(); if (gLst != null) { for (File gFl : gLst.getItems()) { if (gFl.getLabels().getTrashed()) continue; gfs.add( UT.newCVs(gFl.getTitle(), gFl.getId(), gFl.getMimeType())); } //else UT.lg("failed " + gFl.getTitle()); npTok = gLst.getNextPageToken(); qry.setPageToken(npTok); } } while (npTok != null && npTok.length() > 0); //UT.lg("found " + vlss.size()); } catch (Exception e) { UT.le(e); } return gfs; }
public static ArrayList<ContentValues> search(String prnId, String titl, String mime) { ArrayList<ContentValues> gfs = new ArrayList<>(); if (mGOOSvc != null && mConnected) try { // add query conditions, build query String qryClause = "'me' in owners and "; if (prnId != null) qryClause += "'" + prnId + "' in parents and "; if (titl != null) qryClause += "title = '" + titl + "' and "; if (mime != null) qryClause += "mimeType = '" + mime + "' and "; qryClause = qryClause.substring(0, qryClause.length() - " and ".length()); Drive.Files.List qry = mGOOSvc.files().list().setQ(qryClause) .setFields("items(id,mimeType,labels/trashed,title),nextPageToken"); String npTok = null; if (qry != null) do { FileList gLst = qry.execute(); if (gLst != null) { for (File gFl : gLst.getItems()) { if (gFl.getLabels().getTrashed()) continue; gfs.add( UT.newCVs(gFl.getTitle(), gFl.getId(), gFl.getMimeType())); } //else UT.lg("failed " + gFl.getTitle()); npTok = gLst.getNextPageToken(); qry.setPageToken(npTok); } } while (npTok != null && npTok.length() > 0); //UT.lg("found " + vlss.size()); } catch (Exception e) { UT.le(e); } return gfs; }
Cuando obtiene la carpeta id use este código para crear la carpeta en la carpeta `public static ParentReference insertFileIntoFolder (Servicio de unidad, String folderId, String folderName) lanza IOException {
// Log.e ("founddd", id); Archivo fileMetadata = nuevo Archivo (); FileMetadata.setParents (Collections.singletonList (nueva ParentReference (). SetId (folderId == null? "Root": folderId))); FileMetadata.setTitle (folderName); FileMetadata.setMimeType ("application / vnd.google-apps.folder");
File file = mGOOSvc.files().insert(fileMetadata).execute(); System.out.println("Folder ID: " + file.getId()); strChildFolder = file.getId(); return null; }`
- VolleyPlus: NetworkDispatcher.run: Excepción no controlada java.lang.NullPointerException
- Android Studio: Gradle Sync falla con soporte-v4-24.1.1.jar