在我的Android应用程序中,用户可以喜欢我的Facebook页面。因此,我使用webview加载包含类似Facebook的网页。该页面已加载到webview中,然后发生以下情况:
所以我希望,登录后可能就是这样。似乎某种方式似乎webview不记得登录。因此,我需要做些什么来修复它。
以下屏幕截图序列显示了正在发生的事情:
我想避免使用facebook sdk for android!特别是这个程序在我的应用程序的iphone版本中运行得非常好。
以下是一些用于实现所需功能的代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final WebView fbWebView = (WebView) findViewById( R.id.facebookWebView );
fbWebView.getSettings().setJavaScriptEnabled(true);
fbWebView.setWebViewClient( new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest (WebView view, String url) {
Log.d("call url", url );
if ( url.contains("login.php?skip_api_login") ) {
fbWebView.loadUrl("http://www.example.de/iphone_facebook_like_page.html");
return null;
}
if( url.contains("user_successfully_liked") )
fbWebView.loadUrl("http://www.example-success.de");
return null;
}
});
fbWebView.loadUrl("http://www.example.de/iphone_facebook_like_page.html");
}
编辑:我也尝试了以下内容来接受cookie,但这些都不起作用
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().startSync();
CookieManager.setAcceptFileSchemeCookies(true);
CookieManager.getInstance().setAcceptCookie(true);
//rest is the same...
Overrding也不起作用
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
答案 0 :(得分:0)
您有错误,因为WebView不记得Cookie。在SO上阅读该问题:WebView and Cookies on Android
答案 1 :(得分:0)
不确定您是否已得到问题的答案,但我尝试了these instructions和以下代码的组合,这对我有用:
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
...
WebView webView = new WebView();
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setAppCacheEnabled(true);
settings.setDomStorageEnabled(true);
settings.setGeolocationEnabled(true); // this last one is probably optional
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(<your url here>);
...
}
然后,您需要调用CookieSyncManager单例类的相应方法,如上面的链接所示。请注意,API级别21中不推荐使用同步类:see details on CookieSyncManager class