android - 如何在 Android 上处理 Facebook ShareDialog.canShow() == false

标签 android facebook

Facebook 的 Sharing on Android文档告诉我们使用以下代码 fragment 显示 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() 方法相关的错误时,它只是默默地失败,根本没有记录。

所以,回答你的问题:

My question is why do we need to check ShareDialog.canShow()? In what scenarios would this possibly return false and do we need to handle this scenario?

基于我遇到的场景:当用户没有在他们的设备上安装 Facebook 应用程序并且您想共享照片 (SharePhotoContent) 或视频 (ShareVideoContent) >), canShow() 将返回 false。原因是Facebook SDK的WebView版本不支持分享这种内容。

我在调试他们的 FacebookActivity 类时发现了这一点,在 handlePassThroughError() 方法上。 (未记录)错误消息是:

“无法显示提供的内容。这通常意味着 Facebook 应用程序未安装或未更新。如果通过 Web 显示,这可能意味着内容具有此 channel 不支持的属性”

那么,当canShow()返回false时,我们应该怎么办?

这取决于你的场景。可能的解决方案是:

  1. 显示一个对话框(或 SnackBar),告诉用户他们需要安装 Facebook 应用才能分享此类内容;
  2. 请求身份验证 token ,使用 Facebook SDK 登录用户,并使用您自己的对话框和直接调用 Facebook API 共享内容。

Facebook 的可能解决方案是将此包含在他们的文档中或在 LogCat 上记录此错误。

希望对您有所帮助!

关于android - 如何在 Android 上处理 Facebook ShareDialog.canShow() == false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32637498/

相关文章:

android - Cordova 添加平台失败,异常不受支持的 major.minor 版本 52.0

java - 如何将 Firestore 中的时间戳添加到我的变量中

android - 所有安卓手机的规范

android - Facebook 图形 API : Paging next newsfeed return data empty

python - 为什么 'Facebook for websites' 登录,也让你登录到 facebook.com?

android - 将音频文件时间转换为字符串和日期

java - StringTokenizer 和 Split 不起作用

Facebook 连接 : with no javascript?

node.js - Facebook Messenger bot 未按顺序发送消息

Facebook Connect - 身份验证和安全