H5+Android平台第三方插件开发指导

546 阅读1分钟

技术架构

HTML5+ 基座扩展采用三层结构,JS层、PluginBridge层和Native层。 三层功能分别是:
JS层: 在Webview页面调用,触发Native层代码,获取执行结果。
PluginBridge层: 将JS层请求进行处理,触发Native层扩展插件代码。
Native层: 插件扩展的平台原生代码,负责执行业务逻辑并执行结果返回到请求页面。

1、定义java类,继承StandardFeature

public class CommonH5Plus extends StandardFeature {

/**
 * 实现自己的业务逻辑
 * @param pWebview  发起请求的webview
 * @param array JS页面传来的参数
 */
public void myTest(IWebview pWebview, JSONArray array)
{
    String ReturnString = null;
    String CallBackID =  array.optString(0);
    JSONArray newArray = null;
    try {
        newArray = new JSONArray( array.optString(1));
        String inValue1 = newArray.getString(0);
        String inValue2 = newArray.getString(1);
        ReturnString = inValue1 + "-" + inValue2 + "-" ;
    } catch (JSONException e) {
        e.printStackTrace();
    }
    JSUtil.execCallback(pWebview, CallBackID, ReturnString, JSUtil.OK, false);
}

2、 在编写扩展插件时需要修改“/assets/data/dcloud_properties.xml”,在其中添加JS对象名称和Android包的类名对应关系,SDK会根据对应的类名查找并生成相应的对象并执行对应的逻辑。

<feature name="CommonH5Plus" value="com.*.plugin.CommonH5Plus"/>

3、在应用的manifest.json文件中还需要添加扩展插件的应用使用权限


  "permissions" : {
    "CommonH5Plus": {
      "description": "自定义H5插件"
    },

4、自定义 h5plus.js

`mui.plusReady(function() {
	var _BARCODE = 'CommonH5Plus';
	var plusObj = {
		myTest: function(Argus, successCallback, errorCallback) {
			var success = typeof successCallback !== 'function' ? null : function(args) {
					successCallback(args);
				},
				fail = typeof errorCallback !== 'function' ? null : function(code) {
					errorCallback(code);
				};
			callbackID = plus.bridge.callbackId(success, fail);
			return plus.bridge.exec(_BARCODE, "myTest", [callbackID, Argus]);
		},
	};
	window.plus.CommonH5Plus = plusObj;
});

5、html页面引入h5plus.js,编写代码调用

 window.plus.CommonH5Plus.myTest(["Html5","Html6"], function(result ) {alert( result );},function(result){alert(result);}); 

相关链接

ask.dcloud.net.cn/article/66

blog.csdn.net/qq_42581267…