MUI调用自定义插件(Android)
2018-01-15MUI攻城狮6223°c
A+ A-因为项目的需要,需要调用其他jar包中的方法完成一些定制业务,所以仅仅使用html页面是无法完成这项任务的,在MUI官网查资料后得知需要自定义插件完成,因此看着文档完成了开发,这里简单记录一下主要的点:
官方文档地址:Android平台第三方插件开发指导
本人开发环境:eclipse-adt
因为要调用自定义插件,那么HBuilder和云打包就与你无缘了,当然可能你还会关注Android离线打包。
基于Android离线打包文档描述,我的应用也是基于HBuilder-Hello构建的。
要想正确调用自定义插件,注意下面几点即可:
第一、java类的编写,要继承io.dcloud.common.DHInterface.StandardFeature类,如:
package com.atnoce; import java.io.IOException; import org.json.JSONArray; import io.dcloud.common.DHInterface.IWebview; import io.dcloud.common.DHInterface.StandardFeature; import io.dcloud.common.util.JSUtil; public class Sso extends StandardFeature{ /** * 这里注意方法名,前台要传入此方法名 * */ public String ssoFunction(IWebview webview, JSONArray array ) { // 这里写你的业务逻辑即可 return JSUtil.wrapJsVar("success"); } }
第二、注册自定义插件,在文件assets/data/dcloud_properties.xml中注册自定义插件,如:
<!-- 在<features>标签中加入即可 --> <feature name="sso" value="com.atnoce.Sso"></feature>
第三、在assets/apps/这里是你的appid/www/manifest.json 文件permissions中追加插件,如:
"permissions": { "Accelerometer": { "description": "访问加速度感应器" }, ..... ..... ..... 此处太多我都省略了,重点看我在下面添加的sso "sso":{ "description": "sso" } },
第四、在你的html代码中调用这个插件:
geturlButton.addEventListener('tap', function(event){ //这里我用同步方式调用插件,会返回字符串success var rdata = window.plus.bridge.execSync('sso', 'ssoFunction',['a','b']); alert(rdata); });
window.plus.bridge.execSync('sso', 'ssoFunction', ['a','b']);这个方法第一个sso对应dcloud_properties.xml中的sso,第二个参数对应sso实现类的ssoFunction方法,后面的参数以数组方式传入即可。
总体来说说,搞明白了之后回头一看其实很明确,简单明了,就是刚开始的会有点绕,因为使用了自定义插件就不能使用云打包了,因此还需要学会本地打包,好多东西混在一起难免会有弄错的时候。
标签:MUI