Facebook 在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);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么我们需要检查ShareDialog.canShow()?在什么情况下这可能会返回错误,我们是否需要处理这种情况?示例代码只是静默失败而不告诉用户任何东西.
leo*_*ine 26
我昨天花了很多时间试图调试与此相关的错误.从这个意义上来说,Facebook的文档很差,并且当存在与此canShow()方法相关的错误时,它只是默默地失败,根本没有记录.
那么,回答你的问题:
我的问题是为什么我们需要检查ShareDialog.canShow()?在什么情况下这可能会返回错误,我们是否需要处理这种情况?
基于我面临的情况:当用户没有在他们的设备上安装Facebook应用程序并且您想要共享照片(SharePhotoContent)或视频(ShareVideoContent)时,canShow()将返回false.原因是Facebook SDK的WebView版本不支持共享此类内容.
我发现这个FacebookActivity在handlePassThroughError()方法上调试他们的类.(未记录)错误消息是:
"无法显示提供的内容.这通常意味着Facebook应用程序未安装或更新.如果通过Web显示,这可能意味着内容具有通过此渠道不支持的属性."
那么,canShow()回归时我们该怎么做false?
这取决于您的情况.可能的解决方案是:
Facebook的可能解决方案是将其包含在他们的文档中或在LogCat上记录此错误.
希望能帮助到你!