android html传值
时间: 2023-07-11 22:22:31 浏览: 108
在 Android 中,可以通过 WebView 来显示 HTML 页面。要在 HTML 页面和 Android 应用程序之间传递值,可以使用 JavaScript 和 Android 的 WebView 提供的接口。
下面是一个简单的例子,演示了如何在 HTML 页面和 Android 应用程序之间传递值:
在 HTML 页面中,可以使用 JavaScript 来调用 Android 应用程序中的方法。例如,下面的代码演示了如何调用 Android 应用程序中的 showToast 方法:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 传值给 Android</title>
<script>
function showToast() {
Android.showToast("Hello from HTML!");
}
</script>
</head>
<body>
<button onclick="showToast()">点击这里</button>
</body>
</html>
```
在 Android 应用程序中,需要创建一个 WebView,并设置一个 WebChromeClient 和一个 WebViewClient。然后,可以在 Java 代码中定义一个 showToast 方法,并将其注入到 WebView 中,以便在 HTML 页面中调用。
```java
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());
mWebView.addJavascriptInterface(new WebAppInterface(), "AndroidInterface");
mWebView.loadUrl("file:///android_asset/index.html");
}
public void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
private class WebAppInterface {
@JavascriptInterface
public void showToast(String message) {
MainActivity.this.showToast(message);
}
}
}
```
注意,为了保证安全性,需要在注入方法上使用 @JavascriptInterface 注解,并在 AndroidManifest.xml 文件中添加以下代码:
```xml
<uses-permission android:name="android.permission.INTERNET" />
```
这样,在 HTML 页面中调用 Android.showToast("Hello from HTML!") 方法时,就会弹出一个 Toast,显示 "Hello from HTML!"。
阅读全文