2012-01-20 3 views
6

Я видел ваш ответ о отправке файла через Bluetooth. (ответил 13 июня 2011 года в 5:01)Отправка нескольких файлов через 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")); 

Да! Оно работает. Он откроет стандартный инструмент/окно/диалог 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 по умолчанию/окно/диалог по умолчанию, а затем отправить все файлы?

спасибо, что заблаговременно!

ответ

1

Это довольно простое упражнение, но это связано со стоимостью! 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...")); 

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

intent.setType("image/jpeg"); 

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

5

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

Смежные вопросы