2013-07-27 13 views
15

Mam aplikację na Androida, która udostępnia niektóre pliki przy użyciu magazynów w chmurze, takich jak Dropbox. Aby rozpocząć udostępnianie, wyrzucam android.intent.action.SEND. Na wyświetlonej liście widzę aplikację Dysk Google (wcześniej zainstalowaną), więc próbuję wysłać do niej plik - działa poprawnie, plik pojawia się na liście Dysku.Dysk Google GET_CONTENT plik z intencją przeczytania

Następnie na innym urządzeniu chcę przeczytać ten plik. Wrzucam intencję android.intent.action.GET_CONTENT, wybieram Dysk, a następnie nie wiem, jak dostać się do pliku. Otrzymuję Uri coś takiego:

content://com.google.android.apps.docs.files/exposed_content/6jn9cnzdJbDywpza%2BlW3aA%3D%3D%0A%3BRV%2FaV94o%2FCcW4HGBYArtwOdHqt%2BrsYO4WmHcs6QWSVwp%2FXogkRAgit7prTnfp00a%0A 

, które nie wiem jak przekształcić do fizycznej ścieżki pliku. Jak mogę pobrać zawartość pliku z tego?

Grałem wokół dostawcy treści i mogę uzyskać nazwę pliku, ale nie pełną ścieżkę ani nic innego.

W przypadku skrzynek domyślnych otrzymuję styl URI w stylu file://, prosty i prosty, działa dobrze.

Odpowiedz

5

Jest wysyłając URI od dostawcy treści, które można używać z ContentResolver, na przykład takich jak:

getContentResolver().query(Uri contentUri, String[] projection, String selection, String[] selectionArgs, String sortOrder); 

Edit: Dla uzyskania prawdziwych nazw ścieżek obsługi rozwiązanie przedstawione poniżej

Android: Getting a file URI from a content URI?

+0

tak, ale mogę uzyskać tylko nazwę pliku, ale nie ścieżkę do niego. – khusrav

+0

http://stackoverflow.com/questions/5657411/android-getting-a-file-uri-from-a-content-uri daje przykład, jak to zrobić w twoim przypadku pytania. –

+0

ciekawe, dziękuję, pozwól mi spróbować – khusrav

2

Miałem też ten sam problem. Użyłem następującego kodu, aby uzyskać ścieżkę pliku z pliku Dysku Google. Działa dla SkyDrive, a także dla Dropbox.

String filePath = null; 
Uri _uri = data.getData(); 
Log.d("", "URI = " + _uri);          
if(_uri != null && "content".equals(_uri.getScheme())) { 
    Cursor cursor = this.getContentResolver().query(_uri, new String[] { android.provider.MediaStore.Files.FileColumns.DATA }, null, null, null); 
    cursor.moveToFirst(); 
    filePath = cursor.getString(0); 
    cursor.close(); 
} else { 
    filePath = _uri.getPath(); 
} 
Log.d("", "Chosen path = " + filePath); 

Używam intencji, aby wybrać plik. Oto mój kod, aby wybrać plik.

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
String strType = "*/*"; 
intent.setDataAndType(Uri.parse(dir.getAbsolutePath()), strType); 
startActivityForResult(intent, PICKFILE_RESULT_CODE); 

Mój kod działa poprawnie i gdy otrzymam plik z pamięci wewnętrznej lub zewnętrznej. Chcę uzyskać plik z Dysku Google z tym samym kodem.

+1

czy znalazłeś problem do pobrania z dysku Google? –

+0

Nie można uzyskać oryginalnej ścieżki do pliku. – Madhu

+0

Jahangeer Ahmed co to jest reż. w kodzie snipsetowym do wyboru pliku – Radoslav

Powiązane problemy