【问题标题】:Facebook chat button of my website in android webview is not opening the messenger app我的网站在 android webview 中的 Facebook 聊天按钮未打开信使应用程序
【发布时间】:2018-04-04 19:34:36
【问题描述】:

我有一个与 facebook 聊天选项集成的网站。我对我的网站进行了 webview,可以在我的 android 应用程序中看到该聊天按钮,但问题是 单击聊天按钮时它不会将我重定向到手机中安装的信使应用程序,而是将我重定向到一个页面上面写了1。

另一方面,在我的手机上(在手机视图模式下)以 chrome 打开我的网站时,聊天功能运行良好。

这是我的 MainActivity.java 类:

public class MainActivity extends AppCompatActivity {

private WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webView = (WebView)findViewById(R.id.webView);
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webView.loadUrl("https://geekyvisuals.github.io/website/");
    webView.setWebViewClient(new MyWebViewClient());
}

@Override
public void onBackPressed() {
    if(webView.canGoBack())
        webView.goBack();
    else
        super.onBackPressed();
}


private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("https://geekyvisuals.github.io/website")) {
            // This is my web site, so do not override; let my WebView load the page
            return false;
        }
        // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
}
}

我应该怎么做才能直接从我的 android 应用打开 Messenger?

【问题讨论】:

  • 你能修复它吗?
  • @KaranSethi 检查我的解决方案。

标签: android android-intent android-webview facebook-messenger


【解决方案1】:

你试过了吗?

private class MyBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("www.messenger.com") {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
        else {
            view.loadUrl(url);
            return true;
        }

    }
}

【讨论】:

  • 仍然没有打开@Steven
【解决方案2】:

对于“意图:”,使用外部浏览器打开您的信使 URL。

详细解决办法贴here

【讨论】:

    【解决方案3】:

    试试这个方法(截至 2021 年 10 月 27 日):

        webView.webViewClient = object : WebViewClient() {
        
         ........
    
        override fun shouldOverrideUrlLoading(webView: WebView, url: String): Boolean {
                        if (url.startsWith("http"))
                            return false //open web links as usual
        
                        if (url.startsWith("intent:")) {
                            val intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME)
                            val data = intent.data
                            data?.let {
                                try {
                                    val scheme = data.scheme
                                    if (FACEBOOK_APP_SCHEMA == scheme) {
                                        startActivity(intent)
                                        return true
                                    }
                                } catch (e: ActivityNotFoundException) {
                                    val marketIntent = Intent(Intent.ACTION_VIEW).setData(
                                        Uri.parse("$PLAY_STORE_URL${intent.getPackage()}")
                                    )
                                    if (marketIntent.resolveActivity(packageManager) != null) {
                                        this@WebViewActivity.startActivity(marketIntent)
                                        return true
                                    }
                                }
                            }
        
                        }
                        return false
                    }
        
        
        }
        
    ........
    
            companion object {
                private const val FACEBOOK_APP_SCHEMA = "fb-messenger"
                private const val PLAY_STORE_URL = "market://details?id="
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 2011-06-28
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多