2016-11-09 32 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