Facebook赞和评论在Android Webview上不起作用

问题描述 投票:1回答:1

我已经尝试过使用Android Studio和FB共享进行Webview,其他社交媒体共享按钮也可以正常工作。但是我网站上的FB直接喜欢和评论按钮不起作用。当我按类似的按钮时,我可以看到左上方屏幕编号为“ 1”的白色屏幕。请帮助我。

MainActivity.Java

package com.example.neermaicom;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.WindowManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import static android.content.Intent.*;

public class MainActivity extends AppCompatActivity {

private WebView webView;

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

getSupportActionBar().hide();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

webView = findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient() {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url == null || url.startsWith("http://") || url.startsWith("https://")) return false;

    try {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        view.getContext().startActivity(intent);
        return true;
    } catch (Exception e) {

        return true;
    }
}
});
webView.loadUrl("http://www.neermai.com");

WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
}

//This method require to use back button if want to go previous web page

 @Override
 public void onBackPressed() {

 if(webView.canGoBack()){
    webView.goBack();
 }else {
    super.onBackPressed();
 }
 }
android-studio android-webview
1个回答
0
投票

这是由于Facebook用户auth,不幸的是android webview与auth系统不完全兼容,我在webview应用程序中使用的另一种方法是使用“ Chrome Custom Tabs”对我使用的评论系统进行身份验证访问。

在我的应用程序中,当用户单击评论时,将在我的应用程序内打开一个Google Chrome标签,其中显示评论页面;当用户未登录时,chrome对该用户进行身份验证,而无需关闭或最小化我的应用程序即可打开谷歌浏览器。一切都在我自己的应用程序中完成。

要在我将“ Intent”添加到shouldOverrideUrlLoading时启动Chrome Tab,下面是我的代码示例。

 @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if  (url.contains("#comments")){
        Uri uri = Uri.parse(url);
        CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
        builder.build().launchUrl(PostActivity.this, uri);
        return true;
        }
        else {
        view.loadUrl(url);
        return true;
        }
    }

在Gradle应用中:

implementation 'androidx.browser:browser:1.3.0-alpha01'

我的评论页面网址具有“ #comments”,您将其更改为您的评论页面网址中具有的标准,或者如果facebook评论系统直接位于帖子页面上,则将标准的内容放入您的帖子的网址中,在google chrome标签中打开。

© www.soinside.com 2019 - 2024. All rights reserved.