2015-01-04 23 views
7

Tôi có mục đích sau:Intent.ACTION_GET_CONTENT với Google Drive

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

Mục đích cho phép người dùng lựa chọn một tập tin văn bản từ một số tùy chọn. Nó hoạt động tốt với local storage và Dropbox ví dụ, và trong cả hai trường hợp tôi có thể nhận được các tập tin từ như sau:

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

lưu trữ địa phương hoạt động tốt và Dropbox sẽ sao chép một bản sao cục bộ của các tập tin vào thẻ SD và trả lại đường dẫn chính xác. Vấn đề là nếu người dùng chọn tệp từ Google Drive. Khi họ sử dụng Google Drive, data.getData(). GetPath() trả về một cái gì đó như: "/ document/acc = 1; doc = 195" thay vì trả về đường dẫn đến tệp được lưu trữ cục bộ. Làm cách nào để Google Drive tải xuống tệp và trả lại đường dẫn? Tôi muốn cho phép người dùng chọn từ bất kỳ tùy chọn lưu trữ tệp nào mà họ có sẵn.

Trả lời

6

Google Drive có thể hoặc không thể tải xuống tệp cục bộ khi người dùng chọn tệp. Tuy nhiên, trong mọi trường hợp, bạn có thể truy cập nội dung của tệp qua getContentResolver().openInputStream(data.getData()) - lưu ý rằng openInputStream() cũng hỗ trợ các tệp cục bộ và có thể và cũng nên được sử dụng trong các trường hợp khác.

+0

Cảm ơn bạn! Điều này dễ dàng hơn nhiều! – goodnoodle

Các vấn đề liên quan