如何在Android上不在webview中时清除webview的cookie和缓存?

2023-12-06

用户从我的应用程序注销后,我将通过调用此方法清除之前从 Web 视图中缓存的所有内容:

 public void clearCookiesAndCache(Context context){
    CookieSyncManager.createInstance(context);
    CookieManager cookieManager = CookieManager.getInstance();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        cookieManager.removeAllCookies(null);
    }
    else {
        cookieManager.removeAllCookie();
    }        
}

但是,CookieSyncManager 被标记为已弃用。但是,如果您之前没有加载 webview,则需要调用 CookieSyncManager.createInstance(context)。那么,在 webview 之前可能尚未加载的情况下,我们应该如何在不使用已弃用的 CookieSyncManager 的情况下清除 cookie 和缓存呢?


我在我的应用程序中使用以下方法:

    @SuppressWarnings("deprecation")
    public static void clearCookies(Context context)
    {

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            Log.d(C.TAG, "Using clearCookies code for API >=" + String.valueOf(Build.VERSION_CODES.LOLLIPOP_MR1));
            CookieManager.getInstance().removeAllCookies(null);
            CookieManager.getInstance().flush();
        } else
        {
            Log.d(C.TAG, "Using clearCookies code for API <" + String.valueOf(Build.VERSION_CODES.LOLLIPOP_MR1));
            CookieSyncManager cookieSyncMngr=CookieSyncManager.createInstance(context);
            cookieSyncMngr.startSync();
            CookieManager cookieManager=CookieManager.getInstance();
            cookieManager.removeAllCookie();
            cookieManager.removeSessionCookie();
            cookieSyncMngr.stopSync();
            cookieSyncMngr.sync();
        }
    }

或者在科特林中

@SuppressWarnings("deprecation")
fun clearCookies(context: Context?) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
        CookieManager.getInstance().removeAllCookies(null)
        CookieManager.getInstance().flush()
    } else if (context != null) {
        val cookieSyncManager = CookieSyncManager.createInstance(context)
        cookieSyncManager.startSync()
        val cookieManager: CookieManager = CookieManager.getInstance()
        cookieManager.removeAllCookie()
        cookieManager.removeSessionCookie()
        cookieSyncManager.stopSync()
        cookieSyncManager.sync()
    }
}

我从我的片段中按以下方式调用此方法:

mWebView.clearCache(true);
mWebView.clearHistory();
    
U.clearCookies(getActivity());
    
mWebView.loadUrl(authorizeURL);

可以在调用之前和之后转储域的 cookieclearCookies by

String yahooCookies = CookieManager.getInstance().getCookie("https://yahoo.com");
Log.d(C.TAG, "Cookies for yahoo.com:" + yahooCookies);

打电话后clearCookiesyahooCookies 将是null.

这个实现满足了我的需求,我已经在几个模拟器和带有 Android 2.3.3 的史前 Samsung Galaxy Gio 和带有 Android 5.1.1 的 Nexus 5 上对其进行了测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Android上不在webview中时清除webview的cookie和缓存? 的相关文章

随机推荐

  • Jexcel公式计算错误

    我创建了一个工作表 out xls其中单元格 D6 D5 2 且 D5 设置为 1 我的问题是 当我将值插入 jxl 中的 D5 时 D6 永远不会计算 当我在 Excel 中将 1 插入到 D5 中时 D6 只是保留它最初计算出的值 注意
  • python:转换损坏的xls文件

    我从 SAP 应用程序下载了一些销售数据集 SAP 已自动将数据转换为 XLS 文件 每当我打开它时使用Pandas库我收到以下错误 XLRDError Unsupported format or corrupt file Expected
  • 临时文件目录“/var/www/html/activate/../temp/”在实时服务器上不可写

    我在生成 PDF 文件时在实时服务器上收到此错误 它在我的本地系统上运行良好 我正在使用 Laravel 和这个 mPdf 包来生成 PDF PDF包 我如何向该 Temp 文件夹授予可写权限 我在代码中找不到它 并且在服务器上它也不位于上
  • Apache 2.4 中所有大写的 HTTP 标头都去掉了下划线

    我有一个应用程序依赖于发送全部大写加下划线的 HTTP 标头以及请求 从 开始阿帕奇2 4 包含无效字符 包括下划线 的标题现在 默默地落下 这一页建议您可以更改一些设置 以允许不删除旧的 HTTP 标头 即 如果它们在 CURL 中设置
  • 在光标位置插入笑脸

    我正在制作一个项目 用户可以单击表情符号并将它们插入到 contenteditable div 中 我想要三个 div 无论我在什么 div 中 笑脸都应该插入该 div 中 另外 这里的问题是表情符号只插入在 div 的末尾 我希望笑脸只
  • Javascript:如何获取输入文本区域的最后两个字符?

    获取文本区域框中输入的最后两个字符的最佳方法是什么 我需要输入最后 2 个字符 而不是整个字符串的最后两个字符 感谢您的帮助 你需要抓住keypress文本区域上的事件 然后保留按下的按键的日志 请注意 这将捕获箭头键 Shift Alt
  • 比较/过滤两个数组,其中数组 B 包含 A 的任何子字符串

    好的 这是我部分工作的内容 忽略区分大小写 比较以下内容 arrayA apples Oranges salt Cracked Black Pepper arrayB salt pepper orange 它 部分 与以下内容一起工作 fi
  • iPhone 相机视图上的实时水印图像

    提前特别感谢 我是iphone软件开发的初学者 只是寻找如何使用可可以编程方式将水印图像实时添加到相机视图中 不是一步一步地寻找 虽然那会很棒 而是或多或少地寻找我应该从哪里开始学习如何 是否有为此开发的框架 想要一些使用 XCode 框架
  • 将行添加到可编辑网格视图后,日期选择器不出现

    我有一个可编辑的 Gridview 其列如下
  • 同步两个滚动条JavaFX

    我的问题是我有两个水平滚动条 我希望它们一致滚动 我尝试使用 bar1 valueProperty bindBidirectional bar2 valueProperty 问题是我注意到bar1的最大值是1 0 while bar2的最大
  • 是否可以在 Android 中设置提示 Spinner [重复]

    这个问题在这里已经有答案了 无论如何 是否可以为微调器提供类似于为编辑文本字段提供的提示的提示 我知道您可以使用一个提示 为您提供一个标题栏 但仍将初始微调器字段保留为空白 直到您单击微调器 我目前有一种粗略的方法 将虚拟字段设置为旋转器数
  • jQuery 中多重选择的 val() 行为发生了变化吗?

    因此 我到处都看到每个人都说要在多选择元素中输出所选选项的值 应该使用如下所示的内容 selid selected val 在这种情况下 val 将返回一个值数组 好吧 我无法复制这种行为 据我所知 此类代码仅返回第一个选定的值 这是一个快
  • ANTLR:错误恢复和报告

    我在使用 ANTLR v3 恢复和重新发布错误时遇到问题 我点击这个链接http www antlr org blog antlr3 error handling tml但我没有那个解决方案 我想做一些报告和恢复 例如在源程序中是这样的 学
  • 如何从 spring-security 获取明文密码?

    我使用 Grails spring security LDAP 来验证用户身份 身份验证现在可以工作 但我需要纯文本密码来验证第二个服务 我尝试了 SpringSecurityService 属性 但没有一个包含密码 我是否必须实现自己的
  • 编译时出错 - 链接 .cpp 和头文件

    我正在尝试将我的 cpp 实现文件与我的头文件链接 我从我的 mac 终端收到此错误消息 rowlandev playground rowlandev g main cpp o main Undefined symbols for arch
  • 我可以在 html 文件中使用 nodejs 库吗?

    我想在 HTML 文件中使用该库nodemailer发送电子邮件 为了用 Node js 做到这一点 我简单地把var nodemailer require nodemailer 但是在我的 HTML 文件的脚本组件的顶部require不是
  • 使用 Jlink 在一个平台上为另一个平台创建 Java 运行时映像

    我在 Linux 机器上使用 jlink 创建了运行时映像 我明白了linux文件夹下的include文件夹 这是否意味着我只能在 Linux 平台上使用此运行时映像 如果是 是否有任何方法可以在一个平台上为另一个平台创建运行时映像 例如
  • 使用索引数据帧从数据帧中提取值 - R

    我有一个有用信息的数据框 X c 1 2 3 4 5 6 7 8 9 10 Y c 5 4 3 2 1 0 1 2 3 4 Z c 11 12 13 14 15 16 17 18 19 20 df lt data frame X Y Z 以
  • 将一个游戏对象组件添加到另一个具有运行时值的游戏对象中

    在运行时我想要将一个游戏对象组件复制到另一个游戏对象 就我而言 我有一台相机 其中添加了多个带有值设置的脚本 我想在运行时将相同的组件添加到我的另一个相机中 到目前为止 我已经尝试过此操作 获取对象的所有组件 然后尝试添加 但它不起作用 C
  • 如何在Android上不在webview中时清除webview的cookie和缓存?

    用户从我的应用程序注销后 我将通过调用此方法清除之前从 Web 视图中缓存的所有内容 public void clearCookiesAndCache Context context CookieSyncManager createInst