6

Sto lottando per far funzionare il mio codice.Android Google Drive SDK - come mostrare l'elenco dei file nella cartella selezionata

Voglio la mia app (quando si fa clic su un pulsante) per mostrare tutte le cartelle (e file) nella cartella principale dell'unità. Ma sembra che questo non sia possibile poiché anche se ho autorizzato l'app utilizzando Ouath2, l'app ha solo accesso ai file e alla cartella che l'utente seleziona.

Il comportamento è strano in quanto quando si apre il selettore di cartelle, esso elenca solo i contenuti di quella cartella se il contenuto è nelle cartelle. Non verrà elencato alcun file.

Un esperto può guardare il mio codice e dirmi dove sto andando male?

Sto utilizzando l'attività PickFolderWithOpener per ottenere l'ID del disco. Esso restituisce un DriveID basato sulla selezione degli utenti dal selettore ..

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

è che è ciò che è tornato qui, la cartella di Drive ID? Devo quindi chiamare l'intento ListFilesInFolderActivity. Suppongo di dover passare questo driveID nella chiamata intent? Se formatto il DriveID come una stringa e lo passo, non riesce con "Impossibile trovare DriveId. Sei autorizzato a visualizzare questo file?" Messaggio.

Quindi quello che sto facendo è passare il ResourceID.

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

ciò che deve essere utilizzato nella ListFilesInFolderActivity? Il DriveID o resourceID? Ecco quello che ho nel 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); 



} 
}; 

che sembra funzionare, ma elenca solo le cartelle nella cartella selezionata. Non elenca i file. Perché folder.listChildren(getGoogleApiClient()) non elenca anche i file !?

Speriamo che questo sia qualcosa di ovvio che mi manca.

+0

qual è l'ambito dell'unità nella tua app? – Sunny

+0

mGoogleApiClient = new GoogleApiClient.Builder (questo) .addApi (Drive.API) .addScope (Drive.SCOPE_FILE) .addConnectionCallbacks (questo) .addOnConnectionFailedListener (questo) .build(); – user3437721

+1

E 'questo il motivo? "Nota: l'API Android di Google Drive attualmente supporta solo gli ambiti di autorizzazione drive.file e drive.appdata. Se la tua applicazione richiede autorizzazioni o funzionalità aggiuntive non ancora disponibili nell'API Android di Drive, devi utilizzare il client Java API di Google." – user3437721

risposta

9

Non è possibile eseguire questa operazione con il nuovo SDK poiché consente solo l'accesso a SCOPE_FILE.

È questo il motivo? "Nota: l'API Android di Google Drive attualmente supporta solo gli ambiti di autorizzazione drive.file e drive.appdata. Se la tua applicazione richiede autorizzazioni o funzionalità aggiuntive non ancora disponibili nell'API Android di Drive, devi utilizzare il client Java API di Google."

+0

Grazie per questo dettaglio "Nota Attualmente l'API Android di Google Drive supporta solo gli ambiti di autorizzazione drive.file e drive.appdata. Se la tua applicazione richiede autorizzazioni o funzionalità aggiuntive non ancora disponibili nell'API Android di Drive, devi utilizzare il client Java API di Google. " ! Questo è un punto davvero importante! –

Problemi correlati