android aar适配uniapp

       最近有商户需要接入我们sdk,但是我们都是android或者ios原生的,直接用又不能用,需要做适配,本文就教你一步步实现android aar适配uniapp。

       官方参考教程:开发者须知 | uni小程序SDK

       但是官方写的比较繁琐,好像也没有写哪里去获取他们的扩展类的包,就是需要继承

io.dcloud.feature.uniapp.common.UniModule

这个类,你才能暴露出js的方法给uniapp使用。

第一步:获取需要继承的扩展类aar包

在这里

https://mvnrepository.com/artifact/io.dcloud.unimp/uni-app-v8/4.17.2024051110

如果不是这个地址了,你在https://mvnrepository.com搜索io.dcloud.unimp

在你的android项目里面添加如下依赖:

implementation group: 'io.dcloud.unimp', name: 'uni-app-v8', version: '4.17.2024051110'
 

或者下载后放在本地libs文件夹引入。

api(name: 'uni-app-v8-4.17.2024051110', ext: 'aar')

第二步:编写你需要开放给uniapp调用的方法

类必须继承自UniModule

UniJSMethod表示暴露出js方法

UniJSCallback表示回调函数,把结果回调给uniapp

package com.figo.test.uniapp;import android.app.Application;
import android.content.Intent;
import android.util.Log;import com.figo.test.activity.MainActivity;import org.json.JSONObject;import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;
public class PayModule extends UniModule{String tag="PayModule";public static UniJSCallback callback;/**** @param env* @param orderInfo* @param callback*/@UniJSMethodpublic void testPay(String env,String orderInfo, UniJSCallback callback) {this.callback=callback;JSONObject jsonObject=new JSONObject();Log.i(tag, "unionPay orderInfo=" + orderInfo + ",mode=" + mode);//切记,必须通过这种方式获取context上下文,从uniapp传过来的,目前测试下来无法使用Application context=(Application) mUniSDKInstance.getContext().getApplicationContext();try {if (orderInfo == null || orderInfo == "") {callback.invoke("orderInfo 不能为null或者为空");return;}Log.i(tag, "startActivity");final Intent intent = new Intent(context, MainActivity.class);//必须加这个不然也调不起来aar中的activityintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.putExtra("orderInfo", orderInfo);intent.putExtra("env", mode);context.startActivity(intent);}catch(Exception ex){ex.printStackTrace();Log.e(tag, ex.getMessage());try {jsonObject.put("respCode","9999");jsonObject.put("respMsg",ex.getMessage());jsonObject.put("orderInfo",orderInfo);callback.invoke(jsonObject.toString());} catch (Exception e) {e.printStackTrace();}}}@UniJSMethodpublic void add(int num1,int num2, UniJSCallback callback) {Log.i(tag,"num1="+num1+",num2="+num2);int sum=num1+num2;if (callback != null) {callback.invoke(sum);}}@UniJSMethodpublic void multiply(int num1,int num2, UniJSCallback callback) {Log.i(tag,"num1="+num1+",num2="+num2);int result=num1*num2;if (callback != null) {callback.invoke(result);}}
}

第三步:在assets文件夹新建dcloud_uniplugins.json文件

{"nativePlugins": [{"plugins": [{"type": "module","name": “test”,"class": "com.figo.test.uniapp.PayModule"}]}]
}

第四步:uniapp项目引用aar

把依赖放进nativeplugins文件夹

双击manifest.json添加依赖

第五步:uniapp调用android aar中的方法

<template><view class="content"><image class="logo" src="/static/logo.png"></image><view class="text-area"><text class="title">{{title}}</text></view><button type="button" @click="click">按钮</button></view>
</template><script>const test = uni.requireNativePlugin('test');export default {data() {return {title: 'Hello'}},onLoad() {},methods: {click(){//debuggerconsole.log(mobilepayment);mobilepayment.add(100,118,res => {console.log("add返回值="+res);})mobilepayment.multiply(2,9,res => {console.log("multipy返回值="+res);})if (uni.getSystemInfoSync().platform === 'android') {console.log("android调试开始");var orderInfo={"Version": "20240823","MerId": "1234567890","MerOrderNo": "2024082312345678","TranDate": "20240823","TranTime": "163026","OrderAmt": "1","Signature": "test123123123"
}const orderInfoString = JSON.stringify(orderInfo);test.testPay("00",orderInfoString,res => {console.log(res);})} else {console.log('此API只能在Android平台使用');}}}}
</script><style>.content {display: flex;flex-direction: column;align-items: center;justify-content: center;}.logo {height: 200rpx;width: 200rpx;margin-top: 200rpx;margin-left: auto;margin-right: auto;margin-bottom: 50rpx;}.text-area {display: flex;justify-content: center;}.title {font-size: 36rpx;color: #8f8f94;}
</style>

第六步:打包运行

android的需要运行到手机或者模拟器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/407730.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL 与对象存储的结合: 在 MinIO 中访问外部数据

数据领域最激动人心的发展之一是湖仓一体功能在所有主要数据库供应商中的兴起。Snowflake 和 SQL Server 长期以来一直采用这一点&#xff0c;现在 PostgreSQL 正在通过 pg_lakehouse 拥抱这种范式转变&#xff0c;使得利用现代数据湖进行分析、AI 等比以往任何时候都更容易。随…

解决Java使用Jsoup后台调用天地图地理编码接口的几个问题

目录 前言 一、天地图的地理编码接口 1、相关的API介绍 2、响应接口 二、使用JSOUP调用相应接口面对的问题及应对 1、第一关访问路径的问题 2、第二关UnsupportedMimeTypeException 3、可能的http获取403问题 三、总结 前言 如果你现在的项目中有如下的需求&#xff0c;…

[JavaEE] 工作流- Activiti7 框架详解

目录 1、Activiti介绍 1.1、BPMN设计器 1.2、常见流程符号 1.2.1、事件event 1.2.2、活动activiti 1.2.3、流向flow 2、入门案例 2.1、需求说明 2.2、初始环境 2.2.1、添加依赖 2.2.2、添加配置 2.2.3、添加引导类 2.2.4、启动项目 2.2.5、表结构 2.2.6、常见ap…

解决 mfc140.dll 文件丢失的问题,5种mfc140.dll解决方法

当您尝试启动一个用 Microsoft Visual Studio 2015 开发的 Windows 应用程序时&#xff0c;如果出现“无法找到 mfc140.dll 文件”的错误&#xff0c;请不要紧张。这类问题通常由DLL文件缺失、损坏或未正确安装引起。好消息是&#xff0c;存在多种解决方案可以帮助您解决这一挑…

Vue指令:v-cloak、v-once、v-pre 指令

Vue 指令系列文章&#xff1a; 《Vue插值&#xff1a;双大括号标签、v-text、v-html、v-bind 指令》 《Vue指令&#xff1a;v-cloak、v-once、v-pre 指令》 《Vue条件判断&#xff1a;v-if、v-else、v-else-if、v-show 指令》 《Vue循环遍历&#xff1a;v-for 指令》 《Vue事件…

【机器学习练习】糖尿病预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、数据预处理 1. 数据导入 import numpy as np import pandas as pd import seaborn as sns from sklearn.model_selec…

css 将背景图片居中显示,并且显示全,不拉伸的效果实现,图片设置宽度,高度自适应,并且显示全。

1、背景自适应的css&#xff1a; .bg-tns {background-image: url(img/xxx.jpg);background-size: cover;background-position: center; /* 将图片居中显示 */min-height: calc(100vh-100px); /* 确保至少为视口高度 */} 这个布局是这样的&#xff1a; 这里的背景图的高度&am…

unity Standard Assests资源商店无法安装解决方案

Unity游戏开发 “好读书&#xff0c;不求甚解&#xff1b;每有会意&#xff0c;便欣然忘食。” 本文目录&#xff1a; Unity游戏开发 Unity游戏开发unity中国 嗨嗨嗨&#xff0c;我来啦。 这几天的川渝之旅已经圆满结束了&#xff0c;今天开始正常给大家更新&#xff1a; Unity…

Unity与UE,哪种游戏引擎适合你?

PlayStation vs Xbox&#xff0c;Mario vs Sonic&#xff0c;Unreal vs Unity&#xff1f;无论是游戏主机、角色还是游戏引擎&#xff0c;人们总是热衷于捍卫他们在游戏行业中的偏爱。 专注于游戏引擎&#xff0c;Unity和Unreal Engine&#xff08;简称UE4&#xff09;是目前市…

利用漏洞实现 Outlook 的 RCE:第 2 部分

## 攻击面 Outlook 要播放的声音文件是波形音频文件格式( WAV)。它通过接收声音文件路径的PlaySound函数播放。PlaySound将加载文件、解析它,然后调用soundOpen,后者将调用不同的波形函数,例如waveOutOpen。 WAV 文件充当多个音频编解码器的容器(或包装器)。编解码器是一…

Shire 0.5 发布:构建数据安全 RAG,充分整合研发资产

最近&#xff0c;我们发布了新版本的 Shire&#xff0c;在这个新的发布&#xff08;Shire 0.5&#xff09;里&#xff0c;你可以更好地融合本地研发资产&#xff0c;同时构建数据安全 RAG。在这次版本中&#xff0c;我们增加了&#xff1a; 对 SonarQube 的 issue 支持。可以直…

从0到1构建视频汇聚生态:EasyCVR视频汇聚平台流媒体协议支持的前瞻性布局

TSINGSEE青犀EasyCVR视频汇聚平台是一款基于云-边-端一体化架构的视频融合AI智能分析平台&#xff0c;广泛应用于工地、仓储、工厂、社区、校园、楼宇等多个领域。平台凭借其强大的数据接入、处理、转码及分发能力&#xff0c;在视频监控领域展现出显著的技术优势和应用前景。本…

python项目在linux中的启动脚本(shell脚本)

背景&#xff1a; 在linux环境&#xff0c;使用shell脚本&#xff0c;实现对某个服务的启动、停止功能。 shell脚本的功能&#xff1a; 启动&#xff08;start&#xff09;&#xff1a;通过参数 start &#xff0c;实现启动服务。如果该服务已经启动&#xff0c;给出已经启动…

松下弧焊机器人维修 控制柜故障 连接线修复

一、Panasonic焊接机器人控制柜与机器人的接线 机器人的控制箱&#xff0c;一定要配对使用。松下焊接机器人控制柜已经记忆了机器人的绝对原点(机器人位置控制原点)。 二、编码器电缆 (圆形连接器) 1. 接口的插头插座要注意&#xff0c;插头要插到插座中。 2. 用一手握住电缆&a…

《黑神话:悟空》发售后快手游戏笔记本电脑GMV日环比增长40%

一、美联储9月降息预期升温 昨夜美股三大股指在震荡中收涨&#xff0c;市场情绪受到美联储7月会议纪要提振。纪要显示&#xff0c;美联储官员普遍倾向于9月降息&#xff0c;多位官员认为当前利率水平已对经济构成限制。此消息推动美股上涨&#xff0c;并带动金价创新高&#xf…

鸿蒙HarmonyOS编程开发:TLS单向认证通讯示例

1.TLS简介 TLS&#xff08;Transport Layer Security&#xff09;协议的前身是SSL&#xff08;Secure Socket Layer&#xff09;安全套接层协议&#xff0c;由Netscape公司于1994年提出&#xff0c;是一套网络通信安全协议。IETF&#xff08;The Internet Engineering Task Fo…

前端开发中的大屏布局方案:使用 rem 单位与动态设置 html 的 font-size

使用 rem 单位与动态设置 html 的 font-size 前言 随着设备尺寸的多样化&#xff0c;网页需要能够在不同大小的屏幕上提供良好的用户体验。传统的布局方式&#xff08;如使用 px&#xff09;在不同分辨率下可能会导致布局失真。为了解决这个问题&#xff0c;我们可以通过动态…

【UE5】基于摄像机距离逐渐剔除角色

效果 步骤 1. 新建一个工程&#xff0c;在内容浏览器中添加第三人称游戏内容包 2. 找到第三人称角色的材质实例“MI_Quinn_01”并打开 找到材质实例的父项材质“M_Mannequin” 打开材质“M_Mannequin” 在材质图表中添加如下节点 此时运行效果如文章开头所示。 参考视频&#…

flutter 中 ssl 双向证书校验

SSL 证书&#xff1a; 在处理 https 请求的时候&#xff0c;通常可以使用 中间人攻击的方式 获取 https 请求以及响应参数。应为通常我们是 SSL 单向认证&#xff0c;服务器并没有验证我们的客户端的证书。为了防止这种中间人攻击的情况。我么可以通过 ssl 双向认证的方式。即…

创意无限,尽在掌握:热门视频剪辑软件一览

我们记录生活、分享故事、传播信息用视频的频率越来越高了。而这些视频往往都是通过剪辑之后才能展示出当前的效果。那这次我们就来探索剪辑视频的时候都会用到什么工具吧。 1.福昕视频剪辑 连接直达>>https://www.pdf365.cn/foxit-clip/ 这是一款专为追求高效与创意…