如何使用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
相关产品推荐
相关产品推荐

