2012-01-20 35 views
6

Tôi đã thấy câu trả lời của bạn về cách gửi tệp qua Bluetooth. (đã trả lời Jun 13 '11 lúc 5:01)Gửi nhiều tệp qua Bluetooth

Intent i = new Intent(Intent.ACTION_SEND); i.setType("image/jpeg"); 
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("/sdcard/file.jpg")); 
startActivity(Intent.createChooser(i, "Send Image")); 

Có! Nó hoạt động. Nó sẽ mở một công cụ Bluetooth/cửa sổ/hộp thoại mặc định để gửi một tập tin. Nhưng bạn có thể dạy tôi cách gửi nhiều tập tin hơn không? Đây là mã của tôi ...

String xFile[3] = { "aa.txt", "bb.txt", "cc.txt" }; 

Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/plain"); 

for (int i = 0; i < 3; i ++) { 
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(xFile[i]))); 
    startActivity(intent); 
} 

Nó hoạt động, nhưng sẽ mở công cụ/cửa sổ/hộp thoại Bluetooth mặc định cho 3 lần! @@ Nếu có 10 tệp, nó sẽ mở công cụ/cửa sổ/hộp thoại Bluetooth mặc định 10 lần !!

Tôi có thể biết cách mở công cụ/cửa sổ/hộp thoại Bluetooth mặc định một lần, sau đó gửi tất cả các tệp không?

Cảm ơn bạn rất nhiều trước!

Trả lời

1

Đó là một bài tập khá đơn giản nhưng điều này đi kèm với chi phí! Dung lượng lưu trữ SDCard.

Có, bạn cần phải đổ nhiều tệp vào SDCard cho mục đích này.

Đối với mỗi tệp được bán vào SDCard, bạn cần tạo danh sách mảng là Uri.

ArrayList<Uri> listDumpedFileUris = new ArrayList<Uri>(); 
Uri uriFile = Uri.fromFile(new File(dumpedFilePath)); 
listDumpedFileUris.add(uriFile); 

Phần quan trọng là để nói một cách rõ ràng mục đích mà tính năng chọn phải có khả năng đọc các tập tin đổ trên SDCard bằng cách cấp giấy phép đọc, và quan trọng hơn, thêm array list cho thêm của ý gói có thể kiện được.

Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); 
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, listDumpedFileUris); 
startActivity(Intent.createChooser(intent, "Send these files using...")); 

Sau đó, tất cả các tệp được chọn sẽ được gửi qua cơ sở thời gian chạy bluetooth của Android. Bằng cách này, bạn có thể phải xác định rõ ràng các setType cho các tập tin, ví dụ, image/jpeg như trong:

intent.setType("image/jpeg"); 

Các nhiệm vụ duy nhất là từ phía bạn để làm sạch những tàn dư của SDCard tập tin hệ thống mà là một cái gì đó, đối với hầu hết các phần, người dùng Android hoàn toàn không thích!

5

Vâng, điều này có thể được thực hiện bằng các phương tiện sau. Để danh sách các tệp được gửi được biểu thị bằng mMultiSelectData.

ArrayList<Uri> uris = new ArrayList<Uri>(); 
int length = mMultiSelectData.size(); 
Intent mail_int = new Intent(); 
mail_int.setAction(android.content.Intent.ACTION_SEND_MULTIPLE); 
mail_int.setType("*/*"); 
for(int i = 0; i < length; i++) { 
    File file = new File(mMultiSelectData.get(i)); 
    uris.add(Uri.fromFile(file)); 
} 
mail_int.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 
mContext.startActivity(mail_int); 

Thao tác này sẽ mở hộp chọn. Chọn Bluetooth và danh sách các tệp sẽ được gửi.

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