UniApp调用SDK原生接口
Posted 码农乐园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UniApp调用SDK原生接口相关的知识,希望对你有一定的参考价值。
有uniapp开发网友问我,因为公司业务需要调用原生SDK才能实现的功能,因为没有去了解android原生的这方面知识,接下来带大家一起了解一下uniapp调用;
一,准备工作
uniapp调用插件开发文档:https://nativesupport.dcloud.net.cn/NativePlugin/README
先了解uniapp调用插件的大概意思,不然会碰到很多问题
2.下载App离线SDK及demo导入
https://nativesupport.dcloud.net.cn/AppDocs/download/android
将UniPlugin-Hello-AS
导入到Android Studio 中;
这个主要是用到了一个获取识别RFID的功能,插件准备做的功能是将手持设备实现一个多标签回调给UniApp;
3,新建一个Android 依赖包 命名uhfg
4.在build.gradle文件需要引用一下uinapp库
二,编写代码
编写工具类,提供数据
继承UniModule,提供uinapp调用
/**
* ========================
* 描述:提供uinapp调用方法
* @Data : 2022/9/8
* @auther: qiuxianfu
* ========================
**/
public class RFIDModule extends UniModule
private static final String TAG = "RFIDModule";
/**
* 获取单个标签
* @param callback
* @throws JSONException
*/
@UniJSMethod(uiThread = false)
public void getSingleRFID(UniJSCallback callback)
if(callback != null)
String rfid = "";
JSONObject data = new JSONObject();
try
RFIDInfo rfidInfo = RfidManage.getInstance().readRFID();
if (rfidInfo!= null)
Gson gson = new Gson();
String json = gson.toJson(rfidInfo,new TypeToken<RFIDInfo>()
.getType());
data.put("code", "200");
data.put("data", json);
callback.invokeAndKeepAlive(data);
callback.invoke(data);
catch (Exception e)
try
data.put("code", "400");
data.put("msg","异常"+e.getMessage());
callback.invokeAndKeepAlive(data);
catch (JSONException ex)
ex.printStackTrace();
else
Log.i(TAG,"未传回调函数");
@UniJSMethod(uiThread = false)
public JSONObject getSingleRFID()
String rfid = "";
JSONObject data = new JSONObject(); try
RFIDInfo rfidInfo = RfidManage.getInstance().readRFID();
if (rfidInfo != null)
Gson gson = new Gson();
String json = gson.toJson(rfidInfo, new TypeToken<RFIDInfo>()
.getType());
data.put("code", "200");
data.put("data", json);
catch (Exception e)
e.printStackTrace();
);
return data;
@UniJSMethod(uiThread = false)
public void asyncGetMultipleRfid(UniJSCallback callback)
if(callback != null)
String rfid = "";
JSONObject data = new JSONObject();
try
RfidManage until = RfidManage.getInstance();
until.startReadRFID(new RFIDUtilListener()
@Override
public void callBackResult(RFIDInfo rfidInfo)
// isCounting = false;
Gson gson = new Gson();
String json = gson.toJson(rfidInfo,new TypeToken<RFIDInfo>()
.getType());
try
data.put("code", "200");
data.put("msg","获取数据成功");
data.put("data",json);
callback.invokeAndKeepAlive(data);
catch (JSONException e)
e.printStackTrace();
);
catch (Exception e)
try
data.put("code", "400");
data.put("msg","异常"+e.getMessage());
callback.invokeAndKeepAlive(data);
catch (JSONException ex)
ex.printStackTrace();
else
Log.i(TAG,"未传回调函数");
/**
* 获取当前功率
* @return
* @throws JSONException
*/
@UniJSMethod(uiThread = false)
public JSONObject getPower(UniJSCallback callback)
int res = RfidManage.getInstance().getPower();
JSONObject data = new JSONObject();
try
data.put("code", "200");
data.put("data", res);
callback.invokeAndKeepAlive(data);
catch (Exception e)
e.printStackTrace();
return data;
/**
* 获取当前功率
* @return
* @throws JSONException
*/
@UniJSMethod(uiThread = true)
public boolean setPower(int power)
boolean res = RfidManage.getInstance().setPower(power);
return res;
/**
* 自动设置功率
* @return
* @throws JSONException
*/
@UniJSMethod(uiThread = true)
public int setPowerAutomatic()
int res = RfidManage.getInstance().setAutoPower();
return res;
三,打包aar包
如果Android studio 中 gradle task显示不全,则需要在setting
勾选之后
再点files 同步一下gradle文件即可
点击其中一个就可以构建aar
四,uinapp引用插件
在项目下创建目录 nativeplugins 将插件包放在该目录下,插件结构如下。
特别提醒:名字需要一直,否则一直失败
然后在manifest.json引用即可
制作自定义基座,选择自定义基座运行即可;
以上是关于UniApp调用SDK原生接口的主要内容,如果未能解决你的问题,请参考以下文章