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

Kotlin集成Branch IO分享功能时随机崩溃问题求助

解决Branch IO分享时的Null参数崩溃问题

这个崩溃的根源很明确——Kotlin的严格非空检查和Branch SDK的回调参数设计冲突了。从崩溃日志里的核心报错就能定位到问题:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter error

问题原因

Branch SDK的onLinkShareResponse回调逻辑中,当分享操作成功完成时,error参数会传入null;但你在Kotlin代码里把这个参数声明成了非空的BranchError类型(没有加?标记为可空)。Kotlin的空安全机制会在运行时检测到null传入非空参数的情况,直接抛出这个异常,这就是你看到的崩溃根源。

解决方法

只需要把回调里的error参数改为可空类型,同时在逻辑里处理null情况即可:

修改后的完整ShareApp函数代码:

fun ShareApp(){ 
    val appShare = BranchUniversalObject() 
        .setCanonicalIdentifier("app-share") 
        .setTitle(resources.getString(R.string.app_name)) 
        .setContentImageUrl(AppConstants.AppIconURL) 
        .setContentIndexingMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC) 
    
    val lp = LinkProperties() 
        .setChannel("facebook") 
        .setFeature("sharing") 
    
    val ss = ShareSheetStyle(this, appName, Message) 
        .setAsFullWidthStyle(true) 
        .setSharingTitle("Share With") 
    
    appShare.showShareSheet(this, lp, ss, object : Branch.BranchLinkShareListener { 
        override fun onShareLinkDialogLaunched() {} 
        override fun onShareLinkDialogDismissed() {} 
        
        // 关键修改:将error参数改为BranchError?可空类型
        override fun onLinkShareResponse(sharedLink: String, sharedChannel: String, error: BranchError?) {
            // 处理分享结果:error为null表示成功,否则是失败
            if (error == null) {
                // 这里可以添加分享成功的提示或后续逻辑
                Toast.makeText(this@ProfileSettingsActivity, "分享成功", Toast.LENGTH_SHORT).show()
            } else {
                // 分享失败时的错误处理
                Toast.makeText(this@ProfileSettingsActivity, "分享失败: ${error.message}", Toast.LENGTH_SHORT).show()
            }
        } 
        
        override fun onChannelSelected(channelName: String) {} 
    }) 
}

额外排查建议

  1. 确保你的Branch SDK是最新版本,旧版本可能存在更多参数空值的遗留问题;
  2. 测试时多覆盖几个分享渠道(比如WhatsApp、微信等),确认修改后不会再出现类似的空参数崩溃;
  3. 如果还有渠道无法选中的问题,可以检查设备上是否安装了对应应用,以及Branch的分享渠道配置是否正确。

内容的提问来源于stack exchange,提问作者Siraj Sumra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:41:44