我正在创建一个应用程序,该应用程序根据用户的搜索参数向具有特定URL基础和正文的Web视图发出请求。 Web视图正确加载第一个视图,但是当在Web视图中进行选择时,我们注意到带有搜索信息的cookie已丢失。
我是Android开发的新手,但在iOS中,整个过程就像一个魅力。关于可能有什么不同的任何想法?
这是我的代码,我尝试使用Cookie Sync Manager的解决方案:
// WebView set up
WebSettings settings = webView.getSettings();
settings.setLoadsImagesAutomatically(true);
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setAppCacheEnabled(true);
CookieManager cookieManager = CookieManager.getInstance(); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { cookieManager.setAcceptThirdPartyCookies(webView,true); } else { cookieManager.setAcceptCookie(true); }
CookieSyncManager.getInstance().startSync();
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.setWebViewClient(new AppBrowser(this));
String url = "https://m.url.com/flights/search";
if (source != null)
webView.loadDataWithBaseURL(url, source, "text/html", "UTF-8", null);
else
finish();
这是我对Web视图的自定义实现:
public class AppBrowser
extends WebViewClient {
/**
* Attributes
*/
private ExecutorListener listener;
public AppBrowser(ExecutorListener listener) {
this.listener = listener;
}
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
@TargetApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return super.shouldOverrideUrlLoading(view, request);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
Toast.makeText(new WebViewActivity(), "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
FutureTaskManager.executeAfter(listener, "hide", 3, false);
CookieSyncManager.getInstance().sync();
}
}
关于会话持续性可能出现什么问题的任何想法?
答案 0 :(得分:0)
我遇到了类似的问题,让我永远无法调试。
我会向有相同问题的任何人提供的一个提示是检查表单的发布位置。
例如,如果您要加载 m.domain.com 并且表单已发布到 domain.com 或 www.domain.com 您的应用将在 m.domain.com 中搜索会话数据,但会话信息将位于 www.domain.com 或 domain.com 强>
花了我几个小时和几杯咖啡来弄清楚这个看似简单的问题。