Android WebviewFragment 中的 Facebook 链接问题 ERR_UKNOWN_URL_SCHEME

问题描述 投票:0回答:2

我开始遇到一个 WebviewFragment 的问题,它在我的 Android 应用程序中打开,该应用程序旨在在 webview 中打开 Facebook 页面,直到最近才起作用(不能确切地说何时),但是现在当您单击打开 Web 视图的图标,它在 Web 视图中正确打开 Facebook 页面,但随后立即跳转到 Google 错误页面,其中显示

"Webpage not available, the webpage at fb://page/xxxxxxxxx could not be loaded because: net:ERR_UNKNOWN_URL_SCHEME"

Android 应用程序中的

webviewFragment
代码会加载一个 URL,其中包含转发到实际 Facebook 页面 URL 的
meta-equiv="refresh"
代码。

我确信

webviewFragment
工作正常,因为它可以正确加载其他页面(Twitter 页面)而不会出现此错误。

fb://
链接错误来看,它似乎正在加载Facebook页面URL,然后尝试通过将其转换为内部Facebook链接(
fb://
)来打开Facebook应用程序,告诉它在FB应用程序中加载它?

我倾向于尝试解决此问题肯定是在链接中执行某些操作,而不是必须更新应用程序,但我不完全确定发生了什么变化以及发生了什么。

为了澄清,Android 应用程序调用我们网站上的 URL (domain.com/facebok.html),并在该页面中对实际 Facebook 页面 URL 执行元等效刷新。

关于如何解决这个问题有什么想法吗?

更新:

  • <uses-permission android:name="android.permission.INTERNET" />
    肯定是在AndroidManifest.xml文件中。

  • Facebook 应用程序已安装在设备上,但我们希望它在 WebView 中加载 Facebook 页面(作为网页),而不是打开 Facebook 应用程序。

  • 应用程序代码根本没有改变,这似乎是由于操作系统更新而导致行为发生变化而导致的行为改变。

android android-studio facebook
2个回答
1
投票

我用过这个,它对我有用。

override fun shouldOverrideUrlLoading(
                    view: WebView?, request: WebResourceRequest?
                ): Boolean {
                    val url = request?.url.toString()

                    if (url.startsWith("fb://")) {
                        // Open Facebook app using intent
                        val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
                        try {
                            startActivity(intent)
                        } catch (e: ActivityNotFoundException) {
                            // Facebook app is not installed, handle the error or fallback to a web-based solution
                            Toast.makeText(
                                context, "Facebook app not installed", Toast.LENGTH_SHORT
                            ).show()
                        }
                        return true
                    }

                    return super.shouldOverrideUrlLoading(view, request)
                }

0
投票

我猜 Facebook URL 方案仍然存在这个问题。

最近我正在做类似的事情,我必须从我的 Android 应用程序打开一个 Facebook 页面。同样的事情也发生在我身上。

我在互联网上进行了搜索,发现了 @ikmazameti 发布的类似答案,但我不喜欢重定向流程。

当我对任何解决方案不满意时。

我只是尝试了一个非常简单的解决方案,我们应该告诉

Webview
有关此内容
Facebook
内部
URL Scheme
"fb://"
您应该在同一页面中加载此内容。

为此,我使用了这段代码,它在任何地方都对我有用。

在您的

Webview Client
中,您应该将此代码粘贴到此方法中

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
      String host = Uri.parse(url).getHost();
      if (url == null) {
          return true;
      }
      if (!TextUtils.isEmpty(host) && url.startsWith("fb://") && host.contains("profile")) {
          return true;
      } else {
          view.loadUrl(url);
      }
      return true;
}
© www.soinside.com 2019 - 2024. All rights reserved.