适用于 Android 的 Facebook 共享 api 打开基于 Web 的对话框而不是本机应用程序

问题描述

我在我的 android 应用程序中实现了 facebook 共享,当我阅读文档时,它说:

“分享对话框切换到原生 Facebook for Android 应用,然后在帖子发布后将控制权返回给您的应用。根据您使用的 SDK,人们可能需要点击后退箭头图标才能返回到您的应用. 如果未安装 Facebook 应用,“分享”对话框会自动退回到基于网络的对话框。”

我在 MainActivity 有这个 facebook 分享功能:

    fun facebookShare() {
        try {
            val content = ShareLinkContent.Builder()
                .setContentUrl(Uri.parse("https://play.google.com/store/apps/details?id=Avedot"))
                .setQuote(getString(R.string.facebookText))
                .build()
            val shareDialog = ShareDialog(this)
            if (shareDialog.canShow(content)) {
                shareDialog.show(content)
            }
        } catch (ex: ActivityNotFoundException) {
            Toast.makeText(this,"Facebook have not been installed.",Toast.LENGTH_SHORT).show()
        }
    }

当我调用该函数时,它会打开一个基于网络的对话框,而不是 facebook 应用程序(已安装)。我尝试重新安装,但仍然无法正常工作。基于对话框而不是本机 facebook 应用程序?

这是它打开的基于网络的对话框:

enter image description here

解决方法

检查您的 SDK,可能与 SDK 版本有关。

高级主题

内置共享回退

在过去的 Android SDK 版本中,您的应用必须先检查原生的、已安装的 Facebook 应用,然后才能打开共享对话框。如果此人未安装该应用,则您必须提供自己的代码来调用回退对话框。

现在 SDK 会自动检查原生 Facebook 应用。如果未安装,SDK 会将用户切换到他们的默认浏览器并打开 Feed 对话框。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...