根据Google,您不应该将addJavascriptInterface
与不受信任的代码(由"untrusted"它们指的是任何未与你的应用捆绑在一起的东西),如果你这么做,可能会导致应用被从Play Store下架。我的理解是,这是由于JavaScript能够使用反射调用方法的安全漏洞。然而这些在API 17矫正任何方法从JavaScript调用必须与@JavascriptInterface
注释。我的应用minSdkVersion是21,所以我觉得这个策略不适用。我只暴露了一些显示toast消息的基本功能。
我还没有尝试发布使用addJavascriptInterface
的代码,因为它仍在测试中。然而,由于谷歌没有提供任何方法来检查你的应用程序之前,你得到的出版,我不确定这段代码是否会被阻止。
作为替代方案,我正在考虑使用createWebMessageChannel
作为addJavascriptInterface
的替代方案,遵循此答案。虽然它表面上更安全,但它不支持API。23(所以对我来说,这将是API 21-22不能使用这个解决方案),它也似乎不必要的复杂,我想做什么。
对于带有minSdkVersion>17、我们还能指望这款应用因为上述政策而被Play Store屏蔽吗?
确保您采取必要的安全措施。在Proguard中设置webview界面时要小心。
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}