2015-01-04 24 views
7

Mam następujące intencje:Intent.ACTION_GET_CONTENT z Dysku Google

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

Intencją pozwala użytkownikowi wybrać plik tekstowy z wielu opcji. Współpracuje z lokalnego przechowywania i Dropbox, na przykład, w obu przypadkach można uzyskać plik z następująco:

@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(); 
    } 
} 

lokalne przechowywanie działa dobrze i Dropbox będzie skopiować lokalną kopię pliku na karcie SD i zwróć poprawną ścieżkę. Problem polega na tym, że jeśli użytkownik wybierze pliki z Dysku Google. Gdy korzystają z Dysku Google, data.getData(). GetPath() zwraca coś w stylu: "/ document/acc = 1; doc = 195" zamiast zwracać ścieżkę do pliku zapisanego lokalnie. Jak mogę pobrać plik z Dysku Google i zwrócić ścieżkę? Chcę zezwolić użytkownikowi na wybór z dowolnej dostępnej opcji przechowywania plików.

Odpowiedz

6

Dysk Google może, ale nie musi, pobrać plik lokalnie, gdy użytkownik wybierze plik. Jednak we wszystkich przypadkach można uzyskać dostęp do zawartości pliku poprzez getContentResolver().openInputStream(data.getData()) - pamiętaj, że openInputStream() obsługuje również pliki lokalne i może i powinna być używana również w innych przypadkach.

+0

Dziękujemy! To jest o wiele łatwiejsze! – goodnoodle

Powiązane problemy