gpt4 book ai didi

android - 如何像在 android webview 中确认一样处理 facebook

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:25 25 4
gpt4 key购买 nike

我正在尝试使用 android webview 实现类似 facebook 的功能。没有“确认”对话框,它工作正常。但是当需要确认时它不起作用。这是我正在使用的代码 fragment 。

    private void setUpWebView() {
likeWebView.setVerticalScrollBarEnabled(false);
likeWebView.setHorizontalScrollBarEnabled(false);
likeWebView.setWebViewClient(new FacebookWebViewClient());
likeWebView.setWebChromeClient(new MyChromeClient());
likeWebView.getSettings().setJavaScriptEnabled(true);
String url = getFacebookLikeUrl();
likeWebView.loadUrl(url);
}

我还设置了 ViewClient 和 WebChromeClient。

private String getFacebookLikeUrl() {
return "http://www.facebook.com/plugins/like.php?" + "href="
+ URLEncoder.encode(mUrl) + "&access_token="
+ URLEncoder.encode(facebook.getAccessToken());
}

请帮我解决这个问题。提前致谢。

最佳答案

Facebook 点赞确认在新窗口中打开 confirm_widget。所以你的 webview 应该支持多窗口打开。为此 setJavaScriptCanOpenWindowsAutomatically(true) 和 setSupportMultipleWindows(true) 为您的 webview-

 private void setUpWebView() {
likeWebView = new WebView(getContext());
likeWebView.setWebViewClient(new FacebookWebViewClient());
likeWebView.setWebChromeClient(new MyChromeClient());
final WebSettings webSettings = likeWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(true);
String url = getFacebookLikeUrl();
likeWebView.loadUrl(url);
likeWebView.setLayoutParams(FILL);
mContent.addView(likeWebView);
}

Facebook 点赞确认调用 onCreateWindow() 方法。所以覆盖 WebChromeClient 中的 onCreateWindow 方法 -

final class MyChromeClient extends WebChromeClient {

// Add new webview in same window
@Override
public boolean onCreateWindow(WebView view, boolean dialog,
boolean userGesture, Message resultMsg) {
WebView childView = new WebView(getContext());
childView.getSettings().setJavaScriptEnabled(true);
childView.setWebChromeClient(this);
childView.setWebViewClient(new FacebookWebViewClient());
childView.setLayoutParams(FILL);
mContent.addView(childView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(childView);
resultMsg.sendToTarget();
return true;
}

// remove new added webview whenever onCloseWindow gets called for new webview.
@Override
public void onCloseWindow(WebView window) {
mContent.removeViewAt(mContent.getChildCount() - 1);
}
}

当用户点击喜欢或取消时,喜欢调用 onCloseWindow 的 confirm_widget。在此方法中删除最后添加的 webview。

关于android - 如何像在 android webview 中确认一样处理 facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7485850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com