如何在Android WebView上禁用“保存密码”对话框?

27
我希望您能告诉我如何防止Android WebView保存HTML表单中的“密码数据”的提示框?您能帮我解决这个问题吗?
6个回答

40

2
该方法已在API 18级中被弃用。 在WebView中保存密码将不会在未来版本中得到支持。 - Kirk Hammett

24

@Nikola Despotoski的回答在他发布答案时是正确的,但自API 18以后,该方法已过时,根据文档:

今后不再支持在WebView中保存密码

这意味着在Android 4.4及以上版本中,默认情况下将为“false”,而且这个方法将不再存在。

如果您想确保与所有不同的API级别兼容,您应该编写:

  if (Build.VERSION.SDK_INT <= 18) {
        mWebView.getSettings().setSavePassword(false);
    } else {
        // do nothing. because as google mentioned in the documentation -
        // "Saving passwords in WebView will not be supported in future versions"
    }

2
好的,只需要将 Build.VERSION.SDK_INT <= 18 改为 Build.VERSION.SDK_INT < 18。在 API 18 中已经被弃用了。 - Nik
2
@Nik:在API级别18中,这个方法已被弃用,但仍可以使用。从级别19开始,尝试调用此方法会抛出“没有这个方法异常”。 - Tal Kanel
条件不是必需的。该调用与API 18、19等兼容,但它什么也不做。"已弃用"并不意味着该方法已被删除。 - pzulw
@pzulw:我知道过时并不等于被移除。通常情况下,使用早期过时的方法可能会导致意外行为甚至应用程序崩溃,并且可能会被删除!这是因为宣布过时的开发人员认为这种方法不再相关,而且可能不考虑使用测试用例和围绕该方法的错误修复/代码更改。https://dev59.com/h3A85IYBdhLWcg3wF_m0 - Tal Kanel
@Maria:很高兴能帮到你 :) - Tal Kanel
显示剩余3条评论

2
这是一段代码片段,对于像我这样需要看到正确输入方式的人很有用。
    WebView webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setSavePassword(false);

2

它并不像你想的那样过时,我不得不移除版本检查,因为在华为5.01设备上我会收到提示,并且也禁用了FormData...

    webview.getSettings().setSavePassword(false);
    webview.getSettings().setSaveFormData(false);

0

我拥有以上所有条件,并在运行高于18的华为Ascend P7上使用了该应用程序。但出现一个确认框,询问“您是否希望浏览器记住此密码?”

这个弹窗出现的原因可能是什么?我已经尝试了下面的代码。

_viewSettings.setSavePassword(false);  
if (Build.VERSION.SDK_INT <= 18) {  
    _viewSettings.setSavePassword(false);  
}  
_view.loadUrl(url);

注意:上述内容在三星设备上不显示任何保存消息。

0
如果它是在WebView中...只需向表单添加autocomplete="off"属性即可吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接