2012-01-20 22 views
6

Widziałem twoją odpowiedź na temat wysyłania plików przez Bluetooth. (Odpowiedziało 13 cze '11 na 5:01)Wysyłanie wielu plików przez 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")); 

Tak! To działa. Zostanie otwarte domyślne narzędzie/okno/dialog Bluetooth do wysłania pliku. Ale czy mógłbyś nauczyć mnie, jak wysłać więcej plików? Oto mój kod ...

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

Działa, ale otworzy domyślne narzędzie/okno dialogowe/okno dialogowe Bluetooth 3 razy! @@ Jeśli jest 10 plików, otworzy domyślne narzędzie/okno/dialog Bluetooth 10 razy!

Czy mogę wiedzieć, jak jednorazowo otworzyć domyślne narzędzie/okno/okno Bluetooth, a następnie wysłać wszystkie pliki?

Dziękuję bardzo z góry!

Odpowiedz

1

To dość proste ćwiczenie, ale wiąże się to z kosztem! Miejsce do przechowywania danych SDCard.

Tak, w tym celu należy zrzucić wiele plików na kartę SD.

Za każdy plik umieszczony na karcie SD należy utworzyć listę tablic o numerze Uri.

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

Zasadniczą część jest wyraźnie powiedzieć intencję, że ekran wyboru musi być w stanie odczytać dumpingowych pliki na SDCard drodze udzielenia pozwolenia czytać, a co ważniejsze, dodać listę tablicy do intencją użytkownika extra pakiet pakowany.

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

Następnie wszystkie wybrane pliki zostaną wysłane za pośrednictwem urządzenia Bluetooth do uruchamiania w czasie rzeczywistym. Nawiasem mówiąc, być może trzeba będzie jednoznacznie określić setType dla plików, na przykład, image/jpeg jak w:

intent.setType("image/jpeg"); 

Jedynym spoczywa na swojej części posprzątać resztki systemu plików SDCard który jest coś, w większości przypadków użytkownicy Androida absolutnie nienawidzą!

5

Cóż, można to zrobić za pomocą następujących środków. Niech lista plików do wysłania zostanie oznaczona jako 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); 

Spowoduje to otwarcie pola wyboru. Wybierz Bluetooth, a lista plików zostanie wysłana.

Powiązane problemy