7

我看到了您关于通过蓝牙发送文件的答案。(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次!!

我可以知道如何打开一次默认的蓝牙工具/窗口/对话框,然后发送所有文件吗?

非常感谢您!

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 的蓝牙运行时工具发送。顺便说一句,您可能必须setType为文件明确指定 ,例如,image/jpeg如下所示:

intent.setType("image/jpeg");

唯一的责任是清理 SDCard 文件系统的残余部分,这在大多数情况下是 android 用户绝对厌恶的!

于 2012-06-01T02:45:25.943 回答