2016-11-09 25 views
0

我希望我的WebView能够像Web浏览器一样显示提示。WebChromeClient不显示onJsPrompt函数的“消息”参数

从其他答案解决警报(),我发现我必须做这样的事情在我的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显示我实际传递的文本?

+0

能否请您发布的代码片段,你试过吗? – Asama

+0

@Asama我已经将java代码扩展到了整个相关代码片段,并添加了来自javascript的提示调用 – Michael

+0

检查我的答案...您需要创建对话框以设置自定义标题... – Asama

回答

1

您需要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; 
} 
+0

我对onSPLEX(提示),而不是onJSConfirm(alert) – Michael

+0

我假设我实际需要的是类似的东西,但不是AlertDialog,而是需要实际提取并返回文本的东西,但我没有看到直接模拟 – Michael

+0

类似于[this问题](https://stackoverflow.com/questions/10903754/input-text-dialog-android)...出现我仍然需要一个AlertDialog与自定义视图 – Michael