我看到了关于通过蓝牙发送文件的答案。 (回答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"));
是的!有用。它将打开一个默认的蓝牙工具/窗口/对话框来发送文件。但是,请你教我如何发送更多文件?这是我的代码......
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);
}
它可以工作,但它会打开默认的蓝牙工具/窗口/对话框3次! @@如果有10个文件,它将打开默认的蓝牙工具/窗口/对话框10次!!
我可以知道如何打开默认的蓝牙工具/窗口/对话框一次,然后发送所有文件吗?
非常感谢你!
答案 0 :(得分: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
,将发送文件列表。
答案 1 :(得分:1)
这是一个非常简单的练习,但需要付出代价! SDCard存储空间。
是的,您确实需要将多个文件转储到SDCard上。
对于转储到SDCard的每个文件,您需要建立一个Uri
的数组列表。
ArrayList<Uri> listDumpedFileUris = new ArrayList<Uri>();
Uri uriFile = Uri.fromFile(new File(dumpedFilePath));
listDumpedFileUris.add(uriFile);
关键部分是明确告诉选择者必须能够通过授予读取权限来读取SDCard上的转储文件的意图,更重要的是,将数组列表添加到intent的额外parcelable包中。 / p>
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的蓝牙运行时工具发送。
顺便说一下,您可能必须明确指定文件的setType
,例如image/jpeg
,如下所示:
intent.setType("image/jpeg");
唯一的责任是清理SDCard文件系统的残余物,这在很大程度上是Android用户绝对厌恶的!