
Google要求我在Android应用程序中对其进行修复,这基本上意味着不要对通过HTTP加载的网页使用JavaScript注入机制.

不使用此机制(选项1)对我不起作用. 将android: usesCleartextTraffic设置为false也不起作用,因为该应用程序在其他地方使用了非HTTPS流量. 因此,“我可以确保任何受影响的WebView都不会通过loadUrl通过HTTP方案加载任何URL” –我很高兴这样做,因为我的应用程序仅使用file: // URL将内容加载到WebView中,因此安全性应该是好. 但是,我该如何编写shouldOverrideUrlLoading方法的代码,以便Google的检查器可以识别出我仅使用文件// URL?

请注意,问题是不同的(因为我确切知道要问什么)和(因为我不使用HTTP,而是使用文件: // URL).

编辑: 添加我的shouldOverrideUrlLoading方法. (这不是全部方法jscript 注入,而是其中的重要部分. )

@Override
public boolean shouldOverrideUrlLoading (WebView browser, String url) {
if (url.startsWith("file:///")) {
// This is my web site, so do not override; let my WebView load the page
browser.loadUrl(url);
return true;
}
// Otherwise, the link is not for a page on my site, or is an entirely different kind of URI
// (like tel:, geo: or mailto:), so launch another Activity that handles URLs
act.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
最佳答案
我还没有找到使用文件的方法: // URL和资产是否符合Google Code Checker的方法. 尽管这可以解决问题jscript 注入,但我仍然不知道如何编写代码.
我最终解决了我的紧迫问题的方法是通过WebView.evaluateJavascript方法调用JavaScript方法. 从WebViewClient.onPageFinished调用时,页面已完成加载,因此可以访问所有元素. 虽然对我的情况并不重要,但是此方法还可以返回Java代码的值. 因此,尽管它不是JavascriptInterface的通用替代品,但可以解决一些用例.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-162667-1.html
禽兽不如