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

如何使用Slack slack://share-file深链API预选分享弹窗的频道

Android 端通过Slack Deep Link预选中目标频道分享文件的实现方法

实现步骤

  • 第一步:获取目标频道/用户的唯一Slack ID,ID格式为C0XXXXXX(公开频道)、G0XXXXXX(私人群组)、D0XXXXXX(用户私聊),注意不能使用频道的显示名称作为参数值
  • 第二步:构造slack://share-file协议的深度链接,必须携带以下参数:
    • id:必填,上一步获取的目标频道/用户Slack ID,用来预选中分享弹窗的对应选项
    • file:必填,待分享文件的content://格式URI(Android 7.0及以上禁止使用file://格式URI,需通过FileProvider生成)
    • text:可选,文件附带的备注文本
  • 第三步:构造启动Intent,给Slack授予文件临时读取权限后启动即可

代码示例(Kotlin)

val targetChannelId = "C12345678" // 替换为你实际的目标频道ID
// 替换为你实际要分享的文件的content URI
val fileContentUri = Uri.parse("content://com.你的应用包名.fileprovider/share/xxx.pdf")

val slackShareUri = Uri.parse("slack://share-file")
    .buildUpon()
    .appendQueryParameter("id", targetChannelId)
    .appendQueryParameter("file", fileContentUri.toString())
    .appendQueryParameter("text", "本次分享的文件备注")
    .build()

val shareIntent = Intent(Intent.ACTION_VIEW, slackShareUri).apply {
    `package` = "com.Slack"
    // 授予Slack读取文件的临时权限
    addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
}

// 先校验Slack已安装再启动,避免崩溃
if (shareIntent.resolveActivity(packageManager) != null) {
    startActivity(shareIntent)
} else {
    // 自定义处理Slack未安装的逻辑
}

注意事项

  • 如果传入的id无效,或者当前登录的Slack账号没有访问该频道的权限,Slack会自动回退到默认的频道选择列表,不会抛出异常
  • 必须确保传入的文件URI是content://格式,且已经给Slack授予了读取权限,否则会出现文件无法加载的问题
  • 如果要同时分享到多个频道,不支持预选中多个目标,该参数仅支持传入单个ID

内容的提问来源于stack exchange,提问作者Ilya Gazman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:27:03