2015-01-04 36 views
7

Ho la seguente intento:Intent.ACTION_GET_CONTENT con Google Drive

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("text/*"); 
startActivityForResult(intent, DBOpenHelper.REQUEST_CODE_RESTORE); 

L'intento permette all'utente di selezionare un file di testo da una serie di opzioni. Funziona bene con storage locale e Dropbox per esempio, e in entrambi i casi posso ottenere il file da come segue:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if ((requestCode == DBOpenHelper.REQUEST_CODE_RESTORE) 
      && (resultCode == Activity.RESULT_OK)) { 
     restoreFile = new File(data.getData().getPath()); 
     restoreFileName = restoreFile.getName(); 
    } 
} 

memorizzazione locale funziona bene e Dropbox copierà una copia locale del file sulla scheda SD e restituire il percorso corretto. Il problema è che se l'utente seleziona i file da Google Drive. Quando utilizzano Google Drive, data.getData(). GetPath() restituisce qualcosa del tipo: "/ document/acc = 1; doc = 195" invece di restituire il percorso al file memorizzato localmente. Come faccio a scaricare Google Drive dal file e a restituire il percorso? Voglio consentire all'utente di selezionare da qualsiasi opzione di archiviazione di file che hanno a disposizione.

risposta

6

Google Drive può o non può aver scaricato il file localmente quando l'utente preleva il file. Tuttavia, in tutti i casi, è possibile accedere ai contenuti del file tramite getContentResolver().openInputStream(data.getData()) - nota che openInputStream() supporta anche i file locali e può e deve essere utilizzato anche in altri casi.

+0

Grazie! Questo è molto più facile! – goodnoodle