Facebook как и комментарий не работает на Android веб-просмотра - PullRequest
1 голос
/ 10 февраля 2020

Я пробовал веб-просмотр с Android studio и FB share, а другие кнопки социальных сетей работают нормально. Но кнопка прямого лайка и комментария 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();
 }
 }

Activity_main. xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

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

</RelativeLayout>

1 Ответ

1 голос
/ 13 февраля 2020

Это из-за аутентификации пользователя Facebook, к сожалению, android веб-просмотр не полностью совместим с системами авторизации, альтернатива, которую я использую в своих приложениях веб-просмотра, - это использовать "Chrome Пользовательские вкладки " для авторизации доступа к системе комментариев, которую я использую.

В моем приложении, когда пользователь нажимает на комментарий, в моем приложении открывается вкладка Google Chrome, показывающая страницу комментариев, когда пользователь не вошел в систему. , chrome авторизует пользователя без необходимости закрывать или сворачивать мое приложение, чтобы открыть Google chrome. Все сделано в моем собственном приложении.

Чтобы открыть вкладку Chrome, когда я добавил "Intent" в shouldOverrideUrlLoading, ниже приведен пример моего кода.

 @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'

В моем URL для страниц комментариев есть "#comments", вы меняете что-то стандартное в своем комментарии URL-адреса страницы или, если система комментариев Facebook находится непосредственно на странице сообщения, добавьте что-то стандартное в URL ваших сообщений, чтобы открыть их на вкладке Google chrome.

...