使用Intent分享链接导致应用崩溃问题排查求助
解决Intent分享链接时的NullPointerException崩溃问题
看起来你遇到的这个空指针崩溃,根源在于你分享的文本不是完整的URL格式!
问题原因
你传入的EXTRA_TEXT是"example.com",这类没有http://或https://协议前缀的字符串,会导致部分接收分享的应用(比如邮件、社交平台APP)在尝试将其解析为Uri对象时返回null。当这些应用后续调用这个null对象的writeToParcel方法时,就会触发你看到的java.lang.NullPointerException: Attempt to invoke virtual method 'void android.net.Uri.writeToParcel...异常。
修复方案
最直接的解决方法就是给链接补上完整的协议前缀,修改后的代码如下:
Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); // 补全HTTPS协议头,确保能被正确解析为Uri intent.putExtra(Intent.EXTRA_TEXT, "https://example.com"); intent.putExtra(Intent.EXTRA_SUBJECT, "Check out this site!"); startActivity(Intent.createChooser(intent, "Share Using"));
额外优化建议
如果你的链接是动态生成的,可以添加一个简单的判断逻辑,自动为缺少协议头的链接补全前缀:
String shareUrl = "example.com"; if (!shareUrl.startsWith("http://") && !shareUrl.startsWith("https://")) { shareUrl = "https://" + shareUrl; } intent.putExtra(Intent.EXTRA_TEXT, shareUrl);
这样就能避免因为链接格式不规范导致的各类解析异常啦。
内容的提问来源于stack exchange,提问作者Arif Rahman
相关产品推荐
相关产品推荐

