小编Ben*_*rth的帖子

如何在同一个 Android Intent 中以编程方式共享不同 MIME 类型的多个文件?

我正在开发一个 Android 应用程序,该应用程序已经使用以下方法通过蓝牙成功共享生成的 PDF 文件:

public static void sharePdfFile(Context ctx, String pathAndFile) {
    try {
        Intent share = new Intent(Intent.ACTION_SEND);

        share.setPackage("com.android.bluetooth");
        share.setType("application/pdf");
        share.putExtra(Intent.EXTRA_STREAM, Uri.parse(pathAndFile));
        share.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        ctx.startActivity(share);
    } catch (Exception e) {
        ExceptionDAO.Log(CATEGORY.SHARE_INTENT, e, ctx, e.getMessage(), true);
    }
}
Run Code Online (Sandbox Code Playgroud)

我被要求在此共享意图中包含第二个文件(CSV 格式),以便两个文件一起发送。我立即发现了这个问题,它解决了通过蓝牙发送多个文件的问题,但仅使用相同 MIME 类型的文件(该示例中的“video/*”)。

我已经找到了大量通配符 MIME 子类型的示例(“video/*”、“text/*”等),但此时我无法找到具有多个特定 MIME 类型集的 Intent 的任何示例(例如:“应用程序/pdf”和“文本/逗号分隔值”)。因此,我创建了一个使用“*/*”作为 MIME 类型的测试方法,希望能够解决问题。不幸的是,我的测试方法甚至还不足以激活蓝牙共享弹出窗口以选择附近的设备。

我不确定我做错了什么或遗漏了什么。我在调试时似乎无法捕获任何错误,所以我认为我仍然遗漏了一些东西。我确实知道 PDF 和 CSV 文件及其各自的 URI 都可以,因为这两个文件都可以通过原始方法很好地传输(我更改了现有方法上的 MIME 类型和 URI 以测试新的 CSV 文件。) 

这是我的测试方法:

public static void shareTwoFilesTest(Context ctx, String pathAndFile, String pathAndFile2) {
    try …
Run Code Online (Sandbox Code Playgroud)

android bluetooth android-intent mime-types

0
推荐指数
1
解决办法
3214
查看次数

标签 统计

android ×1

android-intent ×1

bluetooth ×1

mime-types ×1