【问题标题】:Cookies with WebView带有 WebView 的 Cookie
【发布时间】:2017-12-12 08:18:32
【问题描述】:

我正在使用 WebView 创建一个仅嵌入显示网站的浏览器的 Android 应用:

mywebView = (WebView) findViewById(R.id.activity_main_webview);
WebSettings webSettings = mywebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mywebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) { ... }
});
mywebView.loadUrl("http://www.example.com");

我注意到两件奇怪的事情:

  • 我收到类似“Cookie 已禁用”的消息

  • 当我单击应显示 PDF 文件的链接时,没有任何反应(但没有错误消息)

如何启用 cookie 和打开(或至少下载)PDF 文件等功能?

【问题讨论】:

  • 你应该看看这个post

标签: java android cookies webview


【解决方案1】:

这是一个gist of a small app,它演示了如何在 WebView 中启用 cookie 以及如何下载/打开 PDF 文件。

请注意,该应用程序演示了两种打开 PDF 文件的方法。第一种方法是在 WebView 中打开 PDF;如果为 PDF 文件定义了另一种方式,则第二种方式在外部应用程序中打开 PDF。

请务必记住,WebView 不提供全面的类似浏览器的支持。来自documentation for WebView

基本用法

默认情况下,WebView 不提供类似浏览器的小部件,不启用 JavaScript 并且忽略网页错误。如果您的目标只是将一些 HTML 显示为 UI 的一部分,这可能没问题;除了阅读网页之外,用户不需要与网页进行交互,并且网页也不需要与用户进行交互。如果您真的想要一个成熟的网络浏览器,那么您可能希望使用 URL Intent 调用浏览器应用程序,而不是使用 WebView 显示它。

Google 会继续完善 WebView,因此您会想要了解 changes 的最新动态。此外,Google 将继续解决 WebView 的安全问题,例如,将不再支持来自 WebView 的 OAuth 请求。见this

【讨论】:

  • 谢谢。 PDF下载的东西有效,但cookies的东西仍然没有。我什么都试过了:CookieManager cm = CookieManager.getInstance();,然后cm.setAcceptCookie(true); cm.setAcceptThirdPartyCookies(mywebView, true);mywebView.loadUrl() 之后或之前,都是一样的“对不起,但是这个浏览器不接受cookies”:((这是一个Wordpress wp-login.php 页面)
  • @Basj 很高兴 PDF 下载工作正常。您是否从 WordPress 收到 cookie 错误消息?会不会是像this 这样的事情?您的测试环境(API/设备)是什么?您是否尝试过访问需要 Cookie 以查看它们是否也被阻止的其他网站?
  • @Basj 另一个想法:检查您可能正在使用的任何浏览器并确保已打开 cookie。在 Chrome 中,查看“设置”下的内容。
  • 您在之前评论中的链接(关于 Wordpress 解决方案)是...超级有用的@Cheticamp,并解决了 cookie 问题!非常感谢!
  • @Basj 很高兴听到这个消息。
猜你喜欢
  • 2012-10-08
  • 2022-07-31
  • 2015-12-24
  • 2017-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多