2012-01-20 9 views
6

Bluetoothでファイルを送信する方法についての回答を見ました。 (回答日:Jun 13 '11、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ストレージスペース。

はい、複数のファイルを目的のためにSDカードにダンプする必要があります。

SDCardにダンプされたファイルごとに、Uriのアレイリストを構築する必要があります。

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

重要な部分は、明示的にチューは読み込み権限を付与する方法でSDカード上のダンプファイルを読み取ることができ、そしてもっと重要なのは、意思の余分に配列リストを追加しなければならないという意図を伝えることですパーセルブルバンドル。

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

は唯一の責任は、SDカードのファイルシステムの残党をクリーンアップするためにあなたの部分の上にあります大部分のために、アンドロイドのユーザーは絶対に嫌です!

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を選択すると、ファイルのリストが送信されます。

関連する問題