You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Intent.createChooser选择应用时共享文件名显示错误的问题

解决FileProvider共享文件时选择器显示自定义文件名的问题

问题核心是Intent.createChooser默认不会直接采用FileProvider传入的displayName,它通常优先读取文件Uri关联的本地文件名或系统解析的元数据。以下是两种可行的解决方式:

方法一:为分享Intent添加EXTRA_TITLE参数

在构建分享Intent时,直接传入Intent.EXTRA_TITLE指定自定义名称,多数系统和应用会优先使用该值作为选择器中的显示文本:

val shareIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(
        Intent.EXTRA_STREAM,
        FileProvider.getUriForFile(this, authority, file, displayName),
    )
    type = document.mimeType.mediaType
    // 设置自定义显示名称
    putExtra(Intent.EXTRA_TITLE, displayName)
}
startActivity(Intent.createChooser(shareIntent, getString(R.string.share_title)))

方法二:为选择器Intent单独设置参数

部分场景下,直接给分享Intent加参数可能不生效,此时可以手动创建选择器Intent并传入自定义名称:

val shareIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(
        Intent.EXTRA_STREAM,
        FileProvider.getUriForFile(this, authority, file, displayName),
    )
    type = document.mimeType.mediaType
}

val chooserIntent = Intent.createChooser(shareIntent, getString(R.string.share_title)).apply {
    // 向选择器传入自定义文件名
    putExtra(Intent.EXTRA_TITLE, displayName)
}
startActivity(chooserIntent)

注意事项

并非所有接收分享的应用都会遵循EXTRA_TITLE参数,少数应用会直接读取文件的原始名称。如果需要兼容这类应用,你可能需要先将文件复制到外部存储并重命名后再分享,但这会涉及额外的存储权限和文件操作。

内容的提问来源于stack exchange,提问作者Massimo Milazzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 18:31:42