1.新建自定义ScanModule .java类,一般放util文件夹项目如图下
package com.alibaba.weex;
import com.taobao.weex.annotation.JSMethod;
import com.weex.app.WXPageActivity;
import com.taobao.weex.bridge.JSCallback;
import com.taobao.weex.common.WXModule;
import com.google.zxing.integration.android.IntentIntegrator;
public class ScanModule extends WXModule {
@JSMethod
public void scanCode(JSCallback callback) {
WXPageActivity act=(WXPageActivity)mWXSDKInstance.getContext();
act.setOnScanFinishCallback(callback);
IntentIntegrator integrator = new IntentIntegrator(act);
integrator.initiateScan();
}
}
2.WXPageActivity 中添加和修改如图1、图2
private JSCallback onScanFinishCallback=null;
public void setOnScanFinishCallback(JSCallback callback){
this.onScanFinishCallback=callback;
}
在handleDecodeInternally类里新增如图下
//新相关增代码
if (this.onScanFinishCallback != null) {
Map data = new HashMap();
data.put("result", true);
data.put("data", code);
this.onScanFinishCallback.invokeAndKeepAlive(data);
} else {
JSONObject data = new JSONObject();
try {
data.put("WeexBundle", Uri.parse(code).toString());
Intent intent = new Intent(WXPageActivity.this, WXPageActivity.class);
intent.setData(Uri.parse(data.toString()));
startActivity(intent);
} catch (JSONException e) {
e.printStackTrace();
}
}
(注意:最好用在AndroidStudio里面添加下面代码,因为还有import java.util.HashMap;import org.json.JSONObject;等包名没导入的,安卓Studio比较方便会提示按Ctrl+Enter自动生成)
3.在WXApplication.java 的 onCreate方法中添加 如下图
// 这里module名称可以自定义
WXSDKEngine.registerModule("zfjg-scan",ScanModule.class);
weex项目中使用方法
导包
const scan = weex.requireModule('zfjg-scan')
调用代码
scan.scanCode(res=>{
//res 即为返回的数据
modal.toast({
message : res.data,
duration : 0.3
})
})