如何将 Facebook Comments Plugin 集成到基于 Webview 的 Android 应用程序中?

问题描述

我刚刚为 Android 构建了我的第一个基于 WebView 的移动应用程序。该应用程序完全基于 WebView。用户可以在 Facebook 评论插件通常显示的项目页面上查看文章,然后用户可以在那里添加评论

当我在我的应用中测试插件时,会发生以下情况:

  1. 首先,我滚动到评论部分并写了一条评论,然后单击“登录以发布”

    Facebook Comments Plugin

  2. 然后,通过 Chrome,我被带到一个单独窗口中的 Facebook 登录页面

    Facebook Login on Chrome

  3. 登录后,我被引导到一个显示“1”的空白屏幕

    Blank Screen

此后没有其他任何事情发生,我也不会被重定向回我的应用。

看看我的activity_main.xml文件

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/container"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".MainActivity">
     tools:ignore="MergeRootFrame">

<WebView
android:id="@+id/activity_main_webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>

这是我的 MainActivity.java 文件的样子:

package com.my.app;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.CookieManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {
    private WebView WebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        WebView = (WebView) findViewById(R.id.activity_main_webview);
        WebView.setWebViewClient(new WebViewClient());
        WebView.loadUrl("https://mywebsite.com/");
        WebSettings webSettings = WebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setAppCacheEnabled(true);
        WebView.getSettings().setUserAgentString("My App UserAgent");
        WebView.setBackgroundColor(Color.parseColor("#080808"));
        WebView.setWebViewClient(new MyCustomWebViewClient());

    }

    class MyCustomWebViewClient extends WebViewClient {

        @Override
        public  boolean shouldOverrideUrlLoading(WebView view,String url) {
            if (Uri.parse(url).getHost().equals("mywebsite.com")) {
                //open url contents in webview
                return false;


            }



            else {
                //here open external links in external browser or app
                Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
                startActivity(intent);
                return true;
            }

        }

    }


    @Override
    public void onBackpressed() {
        if (WebView.canGoBack()) { WebView.goBack();
        }else {
            super.onBackpressed();
        }
    }


}

如果有人能给我提供这方面的指导,我将不胜感激。我仍在了解这如何在基于 WebView 的 Android 移动应用程序中工作。我还想提一下,我的应用程序中所有不在我的域中的链接都必须在单独的浏览器中打开,这一点很重要。根据我到目前为止的尝试,我需要特别更改哪些插件才能正常工作?

在此先非常感谢您!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...