Отправка нескольких файлов через Bluetooth - PullRequest
6 голосов
/ 20 января 2012

Я видел ваш ответ по поводу отправки файла через Bluetooth.(ответил 13 июня 11 в 5:01)

 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"));

Да!Оно работает.Откроется инструмент / окно / диалоговое окно Bluetooth по умолчанию для отправки файла.Но не могли бы вы научить меня, как отправить больше файлов?Вот мой код ...

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

Это работает, но откроет инструмент / окно / диалоговое окно Bluetooth по умолчанию 3 раза!@@ Если имеется 10 файлов, он откроет стандартный инструмент Bluetooth / окно / диалоговое окно 10 раз !!

Могу ли я узнать, как открыть стандартный инструмент / окно / диалоговое окно Bluetooth один раз, а затем отправить все файлы?

Большое спасибо заранее!

Ответы [ 2 ]

5 голосов
/ 14 июня 2012

Ну, это можно сделать следующими способами. Пусть список файлов для отправки будет обозначен 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);

Откроется окно выбора. Выберите Bluetooth, и список файлов будет отправлен.

1 голос
/ 01 июня 2012

Это довольно простое упражнение, но оно обходится дорого!Место для хранения SDCard.

Да, для этой цели вам необходимо выгрузить несколько файлов на SDCard.

Для каждого файла, выгруженного на SDCard, необходимо создать список массивов Uri.

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

Важнейшей частью является явное указание намерению, что программа выбора должна иметь возможность читать выгруженные файлы на SDCard путем предоставления разрешения на чтение, и, что более важно, добавить список массива в намерение.дополнительный пакет, подлежащий продаже.

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..."));

Затем все выбранные файлы будут отправлены через функцию выполнения Android через Bluetooth.Кстати, вам, возможно, придется явно указать setType для файлов, например, image/jpeg как в:

intent.setType("image/jpeg");

Единственная ответственность с вашей стороны заключается в том, чтобы очистить остаткиФайловая система SDCard, которая, по большей части, совершенно не нравится пользователям Android!

...