当前位置:首页 > 行业动态 > 正文

Android JS参数传递方式疑问解答

在Android中调用JavaScript并传递参数,通常使用WebView的 evaluateJavascript方法。“ java,webView.evaluateJavascript("javascriptFunction('param1', 'param2')", null);,

1、准备工作

确保Android项目中已添加WebView控件,在布局文件(如activity_main.xml)中添加如下代码:

     <WebView
         android:id="@+id/webview"
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>

2、加载网页

在Activity中(如MainActivity.java),初始化WebView控件,并加载包含JavaScript函数的网页。

     public class MainActivity extends AppCompatActivity {
         private WebView webView;
         @Override
         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
             webView = findViewById(R.id.webview);
             WebSettings webSettings = webView.getSettings();
             webSettings.setJavaScriptEnabled(true);
             // 加载包含 JavaScript 函数的网页
             webView.loadUrl("file:///android_asset/index.html");
         }
     }

3、定义JavaScript函数

在HTML文件中(如index.html),定义一个JavaScript函数,该函数接受多个参数。

     <!DOCTYPE html>
     <html>
     <head>
         <title>Android 调用 JS 方法传多个参数</title>
         <script type="text/javascript">
             function receiveParameters(param1, param2, param3) {
                 alert("参数1: " + param1 + "
参数2: " + param2 + "
参数3: " + param3);
             }
         </script>
     </head>
     <body>
         欢迎来到示例页面
     </body>
     </html>

4、调用JavaScript函数

在Android中,可以使用loadUrl()方法调用JavaScript函数。

     public class MainActivity extends AppCompatActivity {
         private WebView webView;
         @Override
         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
             webView = findViewById(R.id.webview);
             WebSettings webSettings = webView.getSettings();
             webSettings.setJavaScriptEnabled(true);
             // 加载包含 JavaScript 函数的网页
             webView.loadUrl("file:///android_asset/index.html");
             // 调用 JavaScript 函数并传递多个参数
             webView.postUrl("javascript:receiveParameters('参数1', '参数2', '参数3');");
         }
     }

相关问题与解答

1、如何在Android中调用JavaScript函数并传递JSON对象作为参数?

在Android中,可以将JSON对象转换为字符串,然后传递给JavaScript函数,假设有一个JSON对象jsonObject,可以将其转换为字符串并传递给JavaScript函数:

     String jsonString = jsonObject.toString();
     webView.postUrl("javascript:receiveParameters('" + jsonString + "');");

在JavaScript端,需要将接收到的字符串转换回JSON对象:

     function receiveParameters(jsonString) {
         var jsonObject = JSON.parse(jsonString);
         // 处理jsonObject
     }

2、如何从JavaScript调用Android方法并传递参数?

可以通过定义一个Java接口,并在WebView中添加该接口,然后在JavaScript中调用该接口的方法并传递参数。

在Java中定义接口:

       public class WebAppInterface {
           Context mContext;
           WebAppInterface(Context c) {
               mContext = c;
           }
           @JavascriptInterface
           public void showToast(String toast) {
               Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
           }
       }

在Activity中添加接口:

       webView.getSettings().setJavaScriptEnabled(true);
       webView.addJavascriptInterface(new WebAppInterface(this), "Android");

在JavaScript中调用Android方法:

       function callAndroidFunction() {
           Android.showToast("Hello from JavaScript!");
       }
0