如何在java Android中制作javascript的警报、提示和确认对话框

问题描述 投票:0回答:2

我想在java中制作一个确认功能,就像

javascript
中的警报一样。

示例 JavaScript 代码:

var a = prompt("");

在java中,我有一个函数,它返回带有对话框输入的字符串;

      public static boolean log ;
      public String value;
        public String androidPrompt(){
              log = true;             
              showMyDialog();
              while(log){
              }
              return value;

        }


       public void showMyDialog(){
          log= false;
           value = //inputed value from dialog; 
       }

但是我的应用程序没有响应。我应该怎么办。我想暂停

androidPrompt()
showMyDialog()
尚未完成。当
showMyDialog()
完成后
androidPrompt()
函数将恢复并返回值

java javascript android native-code
2个回答
0
投票

JavaScript 代码示例:var a =prompt("");

Android 不支持这种阻塞式 UI 调用。相反,当用户接受对话框(例如,按下“确定”按钮)时,使用侦听器来通知应用程序中的某些内容。


0
投票

问题有点不清楚调用的调用位置。如果你想在 JavaScript 中执行 Java (android) 函数,那么你必须创建一个接口。

这是使用接口模拟 alert() 函数的示例。

public class JavaScriptInterface {

    Context mContext;
    JavaScriptInterface(Context c) {
        mContext = c;
    }
    
    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
    
}

//at the oncreate of your activity where webviews is being created 
WebView myWebView = findViewById(R.id.sidmyWebView);
myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); //this name will be used in JS
myWebView.getSettings().setAllowFileAccess(true);
myWebView.clearCache(true);     //temporary for css reload
WebSettings myWebSettings = myWebView.getSettings();
myWebSettings.setJavaScriptEnabled(true);   //this enables js on this page

//now, in JS file execution, you can emulate the js alert function as 
//alert("Show toast");  //this will not show anything, as you noted
Android.showToast("Calling Alert-show in Android WebView - Java/JavaScript");   //this will work
© www.soinside.com 2019 - 2024. All rights reserved.