2013-07-27 33 views
15

Tôi có một ứng dụng trên Android mà hiện một số chia sẻ tập tin bằng cách sử dụng kho đám mây như dropbox. Để bắt đầu chia sẻ, tôi ném android.intent.action.SEND. Trên danh sách được hiển thị, tôi thấy ứng dụng Google Drive (đã được cài đặt trước đó), vì vậy tôi thử gửi tệp đến nó - nó hoạt động tốt, tệp sẽ xuất hiện trong danh sách Drive.Google Drive GET_CONTENT ý định đọc tập tin

Sau đó, trên một thiết bị khác, tôi muốn đọc tệp này. Tôi ném mục đích android.intent.action.GET_CONTENT, chọn Drive và sau đó không biết cách tải tệp. Tôi nhận được một cái gì đó như thế này:

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

mà tôi không biết cách chuyển sang đường dẫn tệp vật lý. Làm thế nào tôi có thể nhận được các nội dung tập tin từ điều này?

Tôi đã phát xung quanh nhà cung cấp nội dung và có thể lấy tên tệp chứ không phải đường dẫn đầy đủ hoặc bất kỳ thứ gì khác.

Đối với tài khoản đăng, tôi nhận được file:// kiểu uri, thẳng và đơn giản, hoạt động tốt.

Trả lời

5

Nó được gửi cho bạn uri của nhà cung cấp nội dung mà bạn có thể sử dụng nó với ContentResolver, ví dụ như:

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

Edit: Để nhận được tên đường dẫn thực sử dụng các giải pháp cung cấp dưới đây

Android: Getting a file URI from a content URI?

+0

có, nhưng tôi chỉ có thể lấy tên tệp chứ không phải đường dẫn đến tệp đó. – khusrav

+0

http://stackoverflow.com/questions/5657411/android-getting-a-file-uri-from-a-content-uri cung cấp ví dụ về cách thực hiện điều đó trong trường hợp câu hỏi của bạn. –

+0

thú vị, cảm ơn bạn, hãy để tôi thử – khusrav

2

Tôi cũng phải đối mặt với cùng một vấn đề. Tôi đã sử dụng mã theo dõi để nhận đường dẫn tệp từ tệp Google Drive. Nó hoạt động cho SkyDrive và cũng cho 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); 

Tôi đang sử dụng ý định chọn tệp. Đây là mã của tôi để chọn tệp.

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

Mã của tôi hoạt động tốt và khi tôi nhận tệp từ bộ nhớ trong hoặc bộ nhớ ngoài. Tôi muốn tải tệp từ Google Drive bằng cùng một mã.

+1

bạn có gặp sự cố tải xuống từ ổ google không? –

+0

Không thể nhận đường dẫn tệp ban đầu. – Madhu

+0

Jahangeer Ahmed dir là gì? trong snipset mã của bạn để chọn một tệp – Radoslav