我已经尝试过使用Android Studio和FB共享进行Webview,其他社交媒体共享按钮也可以正常工作。但是我网站上的FB直接喜欢和评论按钮不起作用。当我按类似的按钮时,我可以看到左上方屏幕编号为“ 1”的白色屏幕。请帮助我。
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();
}
}
这是由于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标签中打开。