在 Android 上访问 and/or 清除 Delphi 的 FMX TWebBrowser 中的 cookie

Accessing and/or clearing cookies in Delphi's FMX TWebBrowser on Android

我目前正在使用 Delphi 在 Android 上开发一个应用程序,并且部分身份验证是使用本机 TWebBrowser 组件完成的,据我所知,该组件来自 android 的原生 chrome webkit.

我需要在按下“注销”按钮和退出应用程序时清除特定于我的 TWebBrowser 组件的 cookie,但是我发现这很难,因为似乎没有任何TWebBrowser 中的过程类似于任何类型的 cookie 管理器。虽然我将 EnableCaching 设置为 false,但应用程序会在退出和重新启动时记住我的凭据,这对我的用例来说是有问题的...

有没有办法访问或删除 Delphi 的 Android TWebBrowser FMX 组件创建的 cookie?我想过也许用 JNI 桥导入这个 class :https://developer.android.com/reference/android/webkit/CookieManager ,但我不确定如何做到这一点,如果可能的话想尝试一个本地选项...

P.S :我试过 运行 chrome 查询,例如 chrome://settings/clearBrowserData 但 TWebBrowser 似乎无法识别它,但如果有类似的选择,那么我也愿意接受。

感谢任何帮助!

您可以尝试清除应用程序中 TWebBrowser 运行 的所有 cookie(在 Delphi 11 上测试并受到为 Java 编写的 this answer 的启发):

TJCookieManager.JavaClass.getInstance.removeAllCookies(nil);
TJCookieManager.JavaClass.getInstance.flush();

同样的答案包含访问某些网站 cookie 的代码,给定其 URL,在 Delphi 中等于:

Cookie := TJCookieManager.JavaClass.getInstance.getCookie('siteURL');

其中 Cookie 是类型 JString 的变量。不要忘记将 unit Androidapi.JNI.WebKit 添加到您的 uses 子句中。