在我的 android 应用程序中,用户可以喜欢我的 facebook 页面。因此,我使用一个 webview 来加载一个网页,该网页包含一个类似 facebook 的框。该页面已很好地加载到 webview 中,然后发生以下情况:
- WebView 使用类似 facebook 的框加载我的网页
- 通过点击 Like 按钮,用户被重定向到 facebook 登录页面
- 登录后,用户再次重定向回我的自定义喜欢页面
- 但是当点击like按钮时,用户再次被重定向到facebook登录页面
所以我希望,登录后可能会发生类似的事情。似乎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...
压倒一切也没有用
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}