我希望WebView像Web浏览器一样显示提示。
从其他针对alert()的答案中,我发现我必须在Java代码中执行以下操作:
myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(new WebAppInterface(this),"Android");
// Next line was added
myWebView.setWebChromeClient(new WebChromeClient());
这有效,并且弹出提示,但是与其显示我传递给prompt()的消息,而是显示:
The page at"https:..." says:
在javascript中,我的通话如下所示:
prompt("Test")
因此,我希望提示符下说"测试"。
这完全打破了嵌入在应用程序中的WebView的沉浸感。 如何使WebChromeClient显示我实际传递的文本?
能否请您发布您尝试过的代码段?
@Asama我已将Java代码扩展到整个相关代码段,并添加了来自javascript的即时调用
检查我的答案...您需要创建对话框来设置自定义标题...
您需要在WebChromeClient下的onJsPrompt中创建一个AlertDialog,并附加一个EditText作为其视图,如下所示:
@Override boolean onJsPrompt (WebView view, String url, String message, String defaultValue, JsPromptResult result) {
final EditText input = new EditText(main);
input.setInputType(InputType.TYPE_CLASS_TEXT);
input.setText(defaultValue);
new AlertDialog.Builder(myApp)
.setTitle("App Titler")
.setView(input)
.setMessage(message)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.confirm(input.getText().toString());
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
})
.create()
.show();
return true;
}
我对onJSPrompt(提示)感兴趣,而不对onJSConfirm(警告)感兴趣
我以为我实际需要的是类似的东西,但是我需要的不是AlertDialog,而是实际获取并返回文本的东西,但是我看不到直接的类似物
类似于该问题的答案...似乎我仍然需要带有自定义视图的AlertDialog
您可以尝试将onJsConfirm替换为onPrompt代码,并按原样保留alertdialog。
编辑我的答案
编辑它以添加使文本输入部分正常工作的几行。 谢谢!