使用@JavascriptInterface,举例说明,点击html中的button,跳转到zxing二维码扫描页面
时间: 2024-04-24 14:26:14 浏览: 201
二维码扫描Zxing
使用 `@JavascriptInterface` 注解可以实现 JavaScript 与 Android 之间的交互,包括在 HTML 中的按钮点击事件中触发 Android 功能。下面是一个示例,展示如何点击 HTML 中的按钮,并通过调用 ZXing 库来跳转到二维码扫描页面:
1. 首先,在你的 Android 项目中添加 ZXing 库的依赖。可以在 build.gradle 文件中添加以下代码:
```groovy
implementation 'com.google.zxing:core:3.4.1'
implementation 'com.journeyapps:zxing-android-embedded:3.4.0'
```
2. 在你的 HTML 页面中,添加一个按钮,并定义一个 JavaScript 函数来触发该按钮的点击事件:
```html
<!DOCTYPE html>
<html>
<head>
<title>HTML Button Example</title>
<script type="text/javascript">
function scanQRCode() {
AndroidInterface.scanQRCode();
}
</script>
</head>
<body>
<button onclick="scanQRCode()">Scan QR Code</button>
</body>
</html>
```
3. 在 Android 项目中创建一个 WebView,并使用 `@JavascriptInterface` 注解创建一个 Java 接口,用于在 JavaScript 中调用 Android 功能:
```java
import android.content.Intent;
import android.net.Uri;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
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.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new WebAppInterface(), "AndroidInterface");
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("file:///android_asset/sample.html");
}
public class WebAppInterface {
@JavascriptInterface
public void scanQRCode() {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == RESULT_OK) {
String contents = data.getStringExtra("SCAN_RESULT");
// 处理扫描结果
}
}
}
```
在上述代码中,`WebAppInterface` 是一个 Java 接口,使用 `@JavascriptInterface` 注解修饰了 `scanQRCode()` 方法。该方法会在 JavaScript 中被调用,触发跳转到 ZXing 的二维码扫描页面。
通过以上步骤,当 HTML 页面中的按钮被点击时,会触发 `scanQRCode()` 方法,跳转到 ZXing 的二维码扫描页面。扫描结果会通过 `onActivityResult()` 方法返回,并可以在其中进行处理。
阅读全文