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) {} }) }
额外排查建议
- 确保你的Branch SDK是最新版本,旧版本可能存在更多参数空值的遗留问题;
- 测试时多覆盖几个分享渠道(比如WhatsApp、微信等),确认修改后不会再出现类似的空参数崩溃;
- 如果还有渠道无法选中的问题,可以检查设备上是否安装了对应应用,以及Branch的分享渠道配置是否正确。
内容的提问来源于stack exchange,提问作者Siraj Sumra
相关产品推荐
相关产品推荐

