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

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)

  1. El objeto de tipo DriveID – el que obtiene de los métodos y el uso en su código
  2. Una cadena que se obtiene de encodeToString () y pasa a decodeFromString () – se utiliza para guardar en la aplicación (almacenamiento en caché, por ejemplo)
  3. 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; }` 
  • API de Google Drive \ Docs para Android
  • ID de cliente del SDK de Google Drive
  • Google Drive API - Android - ¿Cómo obtener un ID de unidad de disco?
  • ¿Cómo obtener el nombre de archivo y la ruta real del documento de unidad de Google?
  • Inicio rápido de la unidad NullPointerException
  • Error: GooglePlayServicesUtil: Se ha producido un error interno. Consulte los registros para obtener información detallada. ¿Cómo puedo solucionar esto?
  • API de Google Drive para Android (GDAA) getResourceId () devuelve null (problema de temporización)
  • Selector de Google Drive (JavaScript) no móvil
  • Cómo crear carpeta vacía en la unidad de google?
  • ¿Integración de la unidad de Google en las aplicaciones de Android?
  • Error de la carpeta principal no válida para AppFolder en Drive API
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.