【问题标题】:Android: share simple text as file/attachmentAndroid:将简单文本共享为文件/附件
【发布时间】:2016-07-09 09:14:58
【问题描述】:

我有一个应用程序,它收集一些信息并允许用户使用 Android 的 Intent 框架共享它。

到目前为止,它以纯文本形式共享报告:使用putExtra(Intent.EXTRA_TEXT, report),其中reportString

但是,我希望将报告作为文件共享,以便作为电子邮件附件而不是正文共享。

我是否必须为此创建一个实际文件?如果我这样做,它必须位于其他应用程序可以读取的位置,如send binary content 中所述。

我期待一个 API 可以让我提供 ByteArrayOutputStream,所以也许我只是遗漏了一些东西。具体来说,我宁愿不强制共享应用获得任何存储的权限。

【问题讨论】:

    标签: android file android-intent


    【解决方案1】:

    使用FileProvider 共享不可公开访问的文件。查看 Setting Up File Sharing 获取简短教程。

    虽然将文本作为电子邮件附件发送有点棘手。您不能使用text/plain 作为类型,因为这意味着数据是在EXTRA_TEXT 中提供的。但是这个额外内容中的文本最终会出现在电子邮件正文中,而不是附件中。

    什么应该起作用:

    Uri fileUri = FileProvider.getUriForFile(context, "org.example.provider.authority", reportFile);
    
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("*/*");
    shareIntent.putExtra(Intent.EXTRA_STREAM, fileUri);
    
    startActivity(Intent.createChooser(shareIntent, null)); 
    

    您还应该确保FileProvider.getType() 为报告文件返回text/plain。完成此操作的最简单方法是使用.txt 作为文件扩展名,FileProvider 会自动执行正确的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多