2016-04-24 16 views
2

In meiner App muss ich eine Einstellungsdatei lesen, und diese Einstellungsdatei kann entweder im lokalen Speicher oder im Google Drive-Speicher des Nutzers (mit installierter Google Drive App) gespeichert sein.Android: Datei in Google Drive Dateiauswahl ausgewählt

Nachfolgend öffnet sich ein Dateiauswahl auf, zunächst den Benutzer auffordert, die Picker-Datei, einschließlich der Möglichkeit, die Google Drive Dateiauswahl zu verwenden:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("file/*"); 
intent.addCategory(Intent.CATEGORY_OPENABLE); 
Intent chooserIntent = Intent.createChooser(intent, "Open file"); 
startActivityForResult(chooserIntent, REQUEST_CODE_FILE_PICKER); 

In meiner onActivityResult() Funktion, wenn der Benutzer sich dafür entschieden, Verwenden Sie eine Dateiauswahl, um eine lokale Datei auszuwählen, dann weiß ich bereits, wie man den Dateipfad erfolgreich erhält und die Datei liest. Wenn der Benutzer stattdessen die Google Drive-Dateiauswahl verwendet, um eine Remote-Datei auszuwählen, wie kann ich auf die Datei zugreifen, die der Benutzer ausgewählt hat?

Dies sind die nackten Knochen meiner onActivityResult() Funktion:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == REQUEST_CODE_FILE_PICKER && resultCode == RESULT_OK) { 

     if (LOCAL FILE) { 

      Uri uri = data.getData(); 
      File myFile = new File(uri.getPath()); 
      String filePath = myFile.getAbsolutePath(); 
      // now read file store at 'filePath' from local storage (this part is fine) 

     } else if (GOOGLE DRIVE FILE) { 
      // what do I do here to retrieve the selected file? 
     } 

    } 

    super.onActivityResult(requestCode, resultCode, data); 
} 

Wenn eine Google Drive-Datei mit der Google Drive Dateiauswahl mit der Auswahl erscheint die ausgewählte Datei heruntergeladen werden (aber wo ??), aber dann nichts passiert ... Wie kann ich auf die heruntergeladene Datei zugreifen, um sie in meiner App zu verwenden?

Und wie kann ich oben in onActivityResult() feststellen, ob die ausgewählte Datei tatsächlich eine Google Drive-Datei ist, damit ich sie entsprechend behandeln kann? Was ist der Test für if (GOOGLE DRIVE FILE)?

+0

Wie Sie es gelöst haben? –

+0

@NaveedAli hmm, im Moment scheint es nur zu funktionieren, wenn ich den 'filePath' benutze, der im obigen Code abgeleitet wurde, selbst wenn eine Datei vom Google Drive ausgewählt wurde. Mit anderen Worten, wenn der Benutzer einen Dateiwähler auswählt, der es erlaubt, zu Google Drive zu navigieren und eine Datei von dort auszuwählen, scheint der obige Code zu funktionieren ... dh der 'filePath' ist gültig und meine Methode zum Lesen der Datei Arbeitet mit lokalen Dateien und Laufwerksdateien. Vielleicht kommt es auf den Dateiwähler an ... der für mich funktioniert, ist der Stockpicker auf dem Galaxy S6. Tut mir leid, ich kann nicht mehr helfen. – drmrbrewer

Antwort

0

Ich glaube, Sie verwenden OpenFileActivityBuilder, wenn Laufwerk als Dateiauswahl ausgewählt ist. Es wird eine EXTRA_RESPONSE_DRIVE_ID zurückgegeben, die die Laufwerks-ID der ausgewählten Datei ist. Danach müssen Sie nur DriveFile.open aufrufen, um die genannte Datei zu öffnen. Dies kann Ihr Flag sein, um zu prüfen, ob Sie eine Laufwerksauswahl ausgewählt haben oder nicht.

kann ich nicht beantworten, wo die Datei heruntergeladen ist, aber meine beste Vermutung dafür ist die in Ihrem data/ der Anwendung (die Sie wahrscheinlich keinen Zugriff auf)

Verwandte Themen