Android中Java和JavaScript交互实例
在Android应用开发中,经常会遇到需要在Java代码中调用JavaScript代码,或者在JavaScript代码中调用Java代码的情况,本文将通过一个简单的实例来展示如何在Android中实现Java和JavaScript的交互。
1. 项目结构
我们需要创建一个新的Android项目,项目结构如下:
MyAndroidApp/ ├── app/ │ ├── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ └── myapp/ │ │ │ │ └── MainActivity.java │ │ │ ├── res/ │ │ │ │ ├── layout/ │ │ │ │ │ └── activity_main.xml │ │ │ │ ├── drawable/ │ │ │ │ ├── values/ │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ └── AndroidManifest.xml ├── build.gradle └── settings.gradle
2. 添加WebView组件
在activity_main.xml
中添加一个WebView组件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
3. 配置WebView
在MainActivity.java
中配置WebView,并加载一个本地的HTML文件:
package com.example.myapp; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import androidx.appcompat.app.AppCompatActivity; 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); webView.setWebViewClient(new WebViewClient()); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webView.loadUrl("file:///android_asset/index.html"); } }
4. 创建HTML文件
在src/main/assets
目录下创建一个名为index.html
的文件,内容如下:
<!DOCTYPE html> <html> <head> <title>My Web Page</title> <script type="text/javascript"> function callJavaFunction() { if (window.Android) { window.Android.showToast("Hello from JavaScript!"); } else { alert("Android object is not defined!"); } } </script> </head> <body> <h1>Welcome to My Web Page</h1> <button onclick="callJavaFunction()">Call Java Function</button> </body> </html>
5. 添加Java接口
在MainActivity.java
中添加一个内部类来实现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); webView.setWebViewClient(new WebViewClient()); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webView.addJavascriptInterface(new WebAppInterface(), "Android"); webView.loadUrl("file:///android_asset/index.html"); } public class WebAppInterface { @JavascriptInterface public void showToast(String message) { Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); } } }
6. 运行项目
你可以运行这个项目了,当你点击网页上的按钮时,会触发JavaScript函数callJavaFunction
,该函数会调用Java中的showToast
方法,弹出一个Toast消息。
单元表格:关键步骤归纳
步骤 | 描述 | 文件 | 代码片段 |
1 | 创建WebView组件 | activity_main.xml |
|
2 | 配置WebView | MainActivity.java | webView.setWebViewClient(new WebViewClient()); ... |
3 | 创建HTML文件 | index.html |
|
4 | 添加Java接口 | MainActivity.java | public class WebAppInterface { ... } |
5 | 运行项目 |
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1263693.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复