7

Bluetooth 経由でファイルを送信することに関するあなたの回答を見ました。(2011 年 6 月 13 日 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 ツール/ウィンドウ/ダイアログを一度開いてから、すべてのファイルを送信する方法を教えてください。

事前にどうもありがとうございました!

4

2 に答える 2

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

于 2012-06-14T09:09:16.010 に答える
1

これは非常に単純な演習ですが、これにはコストがかかります。SDカードの収納スペース。

はい、目的のために複数のファイルを 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 ユーザーが絶対に嫌うものです。

于 2012-06-01T02:45:25.943 に答える