为了解决该问题,需要使用兼容性更好的 URL 访问方案,如应使用本地服务器将文件加载到 WebView 中。以下是一个示例:
首先,在 AndroidManifest.xml 文件中添加以下权限:
然后,使用 WebView 加载本地服务器的 URL:
WebView webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://localhost:8080/page.html"); // 加载本地服务器的页面
最后,使用本地服务器来提供文件并设置 cookie:
String html = "Hello World
";
Response response = newFixedLengthResponse(html);
response.addHeader("Set-Cookie", "name=value; SameSite=None; Secure"); // 设置 SameSite cookie
NanoHTTPD server = new NanoHTTPD(8080);
server.start();
server.setResponseFactory(DefaultResponseFactory.INSTANCE);
server.setAsyncRunner(new DefaultAsyncRunner());
server.setServerSocketFactory(new DefaultServerSocketFactory());
server.setTempFileManagerFactory(new DefaultTempFileManagerFactory());
server.addServlet(new WebServlet(), "/");
server.addServlet(new WebServlet(), "/page.html"); // 添加页面的路径
这样,就可以在 Android WebView 中处理 SameSite cookie 了。