在Android中,WebView组件用于展示网页内容,同时支持与JavaScript代码进行交互,实现双向通信。以下是一个简单的示例,展示如何在Android应用中嵌入WebView,并通过Java与JavaScript互相调用函数。

步骤1:在布局文件中添加WebView

首先,在你的Activity的布局XML文件中添加WebView组件。

步骤2:配置WebView设置

在对应的Activity或Fragment中,初始化WebView并设置必要的配置,比如开启JavaScript支持。

import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewInteractionActivity extends AppCompatActivity {

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view_interaction);

        webView = findViewById(R.id.webview);

         // 设置WebSettings 
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);  // 开启JavaScript支持 

         // 设置WebViewClient和WebChromeClient 
        webView.setWebViewClient(new WebViewClient());
        webView.setWebChromeClient(new WebChromeClient());

         // 加载网页 
        webView.loadUrl("file:///android_asset/index.html");  // 假设HTML文件位于assets目录下 
    }
}
步骤3:添加JavaScript接口

为了实现Java与JavaScript的交互,你需要在WebView中添加一个JavaScript接口。这个接口定义了Java端可以被JavaScript调用的方法。

// 在Activity的onCreate方法之后添加如下代码 
webView.addJavascriptInterface(new WebAppInterface(this), "Android");

其中,WebAppInterface是一个实现了你希望暴露给JavaScript调用方法的类。

public class WebAppInterface {
    Context mContext;

    WebAppInterface(Context c) {
        mContext = c;
    }

    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

注意在方法前加上@JavascriptInterface注解,这是出于安全考虑,确保只有明确标记的方法才能被JavaScript访问。

步骤4:在JavaScript中调用Java方法

在你的HTML文件中,可以调用刚才定义的Java方法。例如,在index.html中:

html>Android与JavaScript交互示例 h1> 
 
 点击调用Android函数 button> 
 
 function callAndroidFunction(msg) {     Android.showToast(msg);  // 调用Android端的showToast方法 } script> body> html>
 
 
步骤5:从Java调用JavaScript

如果你需要从Java代码中调用JavaScript函数,可以使用loadUrl方法,传入JavaScript代码。

webView.loadUrl("javascript:yourJavaScriptFunction('Hello from Java')");

确保你的JavaScript函数已经定义并且可在当前页面上下文中访问。

以上就是Android应用中WebView与JavaScript交互的基本示例,通过这种方式,你可以实现丰富的交互功能,比如调用原生功能、传递数据等。