UNIAPP 离线打包以及调用原生sdk |
您所在的位置:网站首页 › uniapp调用第三方摄像头 › UNIAPP 离线打包以及调用原生sdk |
首先要下载android studio需要电脑展示页面效果,还需要下载夜神模拟器,使用Android Studio与夜神模拟器开发调试:
(1)运行夜神模拟器
(2)打开命令行窗口, (3)打开到夜神安装目录(如cd D:\Program Files\NOX\Nox\bin), (4)执行命令:nox_adb.exe connect 127.0.0.1:62001,连接模拟器, (5)若Android Studio连接不上夜神,重启模拟器即可。 4.在hbuilderx里面,生成本地打包资源
5.下载官方sdk,下载地址:https://nativesupport.dcloud.net.cn/AppDocs/download/android 6.修改相关配置,详情请参考官方文档 原生开发者支持 android调用原生方法 举例说明: uniapp 代码:
点击调用android原生方法
// 导入自己定义的插件js // var elitetyc = require('../../common/plugin.js'); export default { data() { return { plugins: elitetyc } }, onLoad() { }, methods: { androidNative(){ this.plugins.CalcNameAddNumFunction( "这段文字是uniapp传过来的", function(result) { uni.showToast({title:JSON.stringify(result),icon:'none',duration:5000}); }, function(result) { uni.showToast({title:result,icon:"none",duration:5000}); } ); } } } plugin.js ! function(root, factory) { if (typeof exports == 'object' && typeof module != 'undefined') { module.exports = factory() } else if (typeof define == 'function' && define.amd) { define(factory) } else { document.addEventListener('plusready', function(){ // 修改此处为插件命名 注释---1 var moduleName = 'elitetyc';
root.plus[moduleName] = factory() },false); } }(this, function() { //在此处定义自己的方法 注释---2 var _BARCODE = 'elitetyc'; var plugintest = { // 这里定义了一个名叫CalcNameAddNumFunction的方法,传递三个参数,后面两个是回调函数 CalcNameAddNumFunction: function(num, successCallback, errorCallback) { var success = typeof successCallback !== 'function' ? null : function(args) { successCallback(args); }, fail = typeof errorCallback !== 'function' ? null : function(code) { errorCallback(code); }; // 注释---3 var callbackID = plus.bridge.callbackId(success, fail); // 注释---4 return plus.bridge.exec(_BARCODE, "calcMyNameAddNum", [callbackID, num]); } }; return plugintest; }); 注释讲解: 注释1:这里是定义插件的名称注释2:这里也是插件的名称,可以看到在后面的plus.bridge.exec(_BARCODE, "calcMyNameAddNum", [callbackID, num]); // 官方讲解有同步与异步,我这里只用了异步 void plus.bridge.execSync( String service, String action, Array args ); service: 插件类别名,对应dcloud_properties.xml的feature name。 action: 调用android端插件方法名称。对应java文件的方法名。 args: 参数列表。 void plus.bridge.exec( String service, String action, Array args ); service: 插件类别名,对应dcloud_properties.xml的feature name。 action: 调用android端插件方法名称。对应java文件的方法名。 args: 参数列表。 注释3:回调ID,后面原生代码中会用到,就好像你调用我,我有结果了,我该知道我把数据返回给谁把?这个id就是这个作用 注释4:在上面有讲到过,这里需要注意的是前两个参数,第一个参数是插件类别名,后面再原生代码中的dcloud_properties.xml文件中会用到 第二个参数,是android原生代码中的方法名要一致 到这里uniapp页面差不多都编写完成了,我们使用android studio导入sdk中的插件项目示例HBuilder-Integrate-AS原生里面java文件: package io.dcloud.simple; import org.json.JSONArray; import io.dcloud.common.DHInterface.IWebview; import io.dcloud.common.DHInterface.StandardFeature; import io.dcloud.common.util.JSUtil; public class ElitetycPluginTest extends StandardFeature { /** * 定义一个方法 将自己的名字加上数字进行返回 * @param pWebview * @param array */ public void calcMyNameAddNum(IWebview pWebview, JSONArray array){ // 获取回调ID String CallBackID = array.optString(0); // 获取参数并计算(这里模拟原生处理) String newstring = "我是原生代码返回::"+array.optString(1); // 构建回传参数 JSONArray newArray = new JSONArray(); newArray.put(newstring); // JSUtil.execCallback(IWebview pWebViewImpl,String pCallbackId,String pMessage,int pStatus,boolean pKeepCallback) // 参数: // pWebViewImpl - webview对象 // pCallbackId - 回调方法ID // pMessage - 回调信息 // pStatus - 回调code值 如:OK、ERROR // pKeepCallback - js层回调function是否要保存 // 第一个参数是当前函数的入参,直接传入, 第二个是根据入参获取的回调id,第三个是回调的数据,是一个json数组 JSUtil.execCallback(pWebview,CallBackID,newstring, JSUtil.OK,false); } } 修改安卓配置文件:把uniapp打包好的原生代码按官网说的导好, 修改dclould_properties.xml ,在里面新建
然后点击运行即可 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |