Facebook在安卓上分享 https://developers.facebook.com/docs/sharing/android文档告诉我们使用以下代码片段显示 ShareDialog:
if (ShareDialog.canShow(ShareLinkContent.class)) {
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("Hello Facebook")
.setContentDescription(
"The 'Hello Facebook' sample showcases simple Facebook integration")
.setContentUrl(Uri.parse("http://developers.facebook.com/android"))
.build();
shareDialog.show(linkContent);
}
我的问题是为什么我们需要检查 ShareDialog.canShow()?在什么情况下这可能会返回 false?我们是否需要处理这种情况?示例代码只会默默地失败,不会告诉用户任何信息。
昨天我花了很多时间尝试调试与此相关的错误。 Facebook 的文档在这个意义上很差,并且当出现与此相关的错误时canShow()
方法,它只是默默地失败,根本不记录任何日志。
所以,回答你的问题:
我的问题是为什么我们需要检查 ShareDialog.canShow()?在什么方面
这种情况可能会返回 false,我们是否需要处理
这个场景?
基于我面临的场景:当用户的设备上没有安装 Facebook 应用程序并且您想要分享照片时(SharePhotoContent
)或视频(ShareVideoContent
), canShow()
将返回false
。原因是Facebook SDK的WebView版本不支持共享此类内容。
我在调试他们时发现了这一点FacebookActivity
类,在handlePassThroughError()
方法。 (未记录的)错误消息是:
“无法显示提供的内容。这通常意味着 Facebook 应用程序未安装或未更新。如果通过网络显示,这可能意味着内容具有此渠道不支持的属性。”
那么,当我们canShow()
回报false
?
这取决于你的场景。可能的解决方案是:
- 显示一个对话框(或 SnackBar),告诉用户他们需要安装 Facebook 应用程序才能共享此类内容;
- 请求身份验证令牌,使用 Facebook SDK 登录用户,并使用您自己的对话框并直接调用 Facebook API 共享内容。
Facebook 的可能解决方案是将其包含在其文档中或在 LogCat 上记录此错误。
希望能帮助到你!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)