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 }) })