DCloud 5+ SDK插件开发

http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/66

开发文档的链接

首先官方文档这方面描述的不太清楚,走了不少弯路,下面的评论很重要!!!

此外提醒下官方Android-SDK下的HBuilder-Integrate项目里有一个小demo,com.example.H5PlusPlugn+assets/H5Plugin;可以跟着看看。

下面记录下几个主要的要点;

jar包的制作

1.写原生的Android代码,首先这部分需要把HBuilder-Integrate项目中的库文件so文件等拷贝过来,需要用到里面的包;我是直接在这个项目做的扩展插件;打包的时候把src里不是的代码java删掉即可。此外这部分主要注意资源文件的获取,有两种方案。

第一种资源用以下方式获取

public static int getIdByName(Context context, String className, String name) {

String packageName = context.getPackageName();

Class r = null;

int id = 0;

try {

r = Class.forName(packageName + ".R");

Class[] classes = r.getClasses();

Class desireClass = null;

for (int i = 0; i < classes.length; ++i) {

if (classes[i].getName().split("\\$")[1].equals(className)) {

desireClass = classes[i];

break;

}

}

if (desireClass != null)

id = desireClass.getField(name).getInt(desireClass);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (SecurityException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (NoSuchFieldException e) {

e.printStackTrace();

}

return id;

}

第二种,按照平时的方法获取但是要在io.dcloud.RInformation.java里声明

2.打包成jar文件(export-java-jar文件;只需打包src下的即可)。

资源导入

将原生的代码中用的png图片、xml布局文件导入项目;同时声明使用到的权限

H5方面的对接

1.mainfest.json与assets/data/properties.xml中的注册声明

name="twotest"

value="com.example.H5PlusPlugin.TwoDemo" />

"twotest": {

"description": "Two test"

}

2.层层调用

html中的调用

plus.twotest.PluginTestFunctionArrayArgu( [["11000001","2016-11-1 10:10:10"],["11000002","2016-11-1 10:10:10"],["11000003","2016-11-1 10:10:10"],["11000004","2016-11-1 10:10:10"]],15, function( result ) {alert( result );},function(result){alert(result)});

js中实现该方法,注意twotest字段,跟前面注册声明的需一致

document.addEventListener( "plusready", function()

{

var _BARCODE = 'twotest',

B = window.plus.bridge;

var twotest =

{

PluginTestFunctionArrayArgu : function (Argus, successCallback, errorCallback )

{

var success = typeof successCallback !== 'function' ? null : function(args)

{

successCallback(args);

},

fail = typeof errorCallback !== 'function' ? null : function(code)

{

errorCallback(code);

};

callbackID = B.callbackId(success, fail);

return B.exec(_BARCODE, "PluginTestFunctionArrayArgu", [callbackID, Argus]);

}

};

window.plus.twotest = twotest;

}, true );

原生java文件,继承StandardFeature,实现PluginTestFunctionArrayArgu 方法

/**

*

*/

package com.example.H5PlusPlugin;

import org.json.JSONArray;

import org.json.JSONException;

import com.mining.app.zxing.mqr_codescan.MipcaActivityCapture;

import android.app.Activity;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import io.dcloud.common.DHInterface.IWebview;

import io.dcloud.common.DHInterface.StandardFeature;

import io.dcloud.common.util.JSUtil;

/**

*@author Administrator

*

*/

public class TwoDemo extends StandardFeature{

/**

*@Title: onStart

*@Description: TODO

*@param@param arg0

*@param@param arg1

*@param@param arg2

*@throws

*/

@Override

public void onStart(Context arg0, Bundle arg1, String[] arg2) {

// TODO Auto-generated method stub

super.onStart(arg0, arg1, arg2);

}

public void PluginTestFunctionArrayArgu(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);

String inValue3 = newArray.getString(2);

String inValue4 = newArray.getString(3);

ReturnString = inValue1 + "-" + inValue2 + "-" + inValue3 + "-" + inValue4;

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

JSUtil.execCallback(pWebview, CallBackID, ReturnString, JSUtil.OK, false);

}

}

最后把我写的demo放上来。是一个扫码功能的扩展

dcloud html5 sdk,DCloud H5与Android Native的交互--5+ SDK插件开发相关推荐

  1. android sdk eclipse没导入,Android—新的eclipse导入SDK出错解决办法

    原先系统崩溃,重装系统,加入一块内存条,从32位变成62位,原先的eclipse用不了:去官网下载64位的eclipse,安装,用一样的方法导入SDK.这时候肯定会提示错误,如下: 1.This An ...

  2. android视频编辑sdk官网,LanSoEditor_common ---android平台的视频编辑SDK

    android平台短视频技术之 视频编辑的经验分享. android平台短视频技术之 视频编辑的经验分享. 提示一: 各位看官,这里分享的是视频编辑,即剪切/拼接/分离/合并/涂鸦/标记/叠加/滤镜等 ...

  3. android h5使用缓存_Android SDK 的 H5 打通方案演进 | 数据采集

    一.前言 近年来,混合开发越来越流行,App 与 H5 的打通需求也越来越迫切. 那什么是 App 与 H5 打通呢? 所谓 "打通",是指 H5 集成 JavaScript 数据 ...

  4. Android 接入支付宝在手机未安装支付宝客户端的情况下掉不起支付宝sdk的h5页面

    Android 接入支付宝在手机未安装支付宝客户端的情况下掉不起支付宝sdk的h5页面 最近公司项目需要对接支付宝移动支付,按照支付宝开发文档一步步往项目中集成,一开始还是比较顺利的,因为测试手机上安 ...

  5. Android SDK 的 H5 打通方案演进 | 数据采集

    一.前言 近年来,混合开发越来越流行,App 与 H5 的打通需求也越来越迫切. 那什么是 App 与 H5 打通呢? 所谓 "打通",是指 H5 集成 JavaScript 数据 ...

  6. 用WEB技术栈开发NATIVE应用:WEEX SDK原理详解

    摘要: WEEX依旧采取传统的web开发技术栈进行开发,同时app在终端的运行体验不输native app.其同时解决了开发效率.发版速度以及用户体验三个核心问题.那么WEEX是如何实现的?目前WEE ...

  7. Android扩展类方法,Android 扩展 uni小程序SDK 原生能力

    Android 扩展 uni小程序SDK 原生能力 概述 本文档主要介绍如何扩展 uni小程序SDK 原生能力. 什么是扩展原生能力? 扩展原生能力指的是将您原生开发的功能通过一定规范暴露给 uni小 ...

  8. h5+app Android上架华为应用市场被拒原因“拒绝获取手机权限后app会闪退“以及隐私政策问题

    h5+app Android上架华为应用市场被拒原因"拒绝获取手机权限后app会闪退" 华为应用市场报错:拒绝获取手机权限后app会闪退,此问题解决方案如下: 在manifest. ...

  9. H5、React Native、Native应用对比分析

    @王利华,vczero "存在即合理".凡是存在的,都是合乎规律的.任何新事物的产生总要的它的道理:任何新事物的发展总是有着取代旧事物的能力.React Native来的正是时候, ...

最新文章

  1. SLAM从0到1——状态估计之最小二乘问题解法:最速下降法、牛顿法、高斯牛顿法、LM法...
  2. 最聪明女生集结清华,挑战人工智能
  3. 浅析Java.lang.Runtime类
  4. 从构造函数看java.io
  5. 平行志愿遵循分数优先php,2020平行志愿的录取规则是什么有哪些优势
  6. 数据分析,怎么做才算到位?
  7. idea 设置默认 jdk
  8. 【Jmeter自学】Linux环境下Jmeter运行
  9. 第11章 支撑向量机 SVM 学习笔记 下 SVM思路解决回归问题
  10. Deepin 的远程连接
  11. 王道训练营3月11日
  12. ipad上的html编辑器,iPad Pro变生产力工具,你还缺这个轻量级浏览器端代码编辑器...
  13. 使用表格制作流量查询表
  14. 基于公共政策的城市停车规划
  15. 浅谈Mediator仲裁者模式
  16. 桌面虚拟化-精彩刚刚开始
  17. Wave VR Native SDK学习(一)
  18. Linux虚拟机CentOS7挂机问题
  19. Python数据挖掘(1)亲和性分析
  20. Anaconda 虚拟环境:pyuic之找不到模块之最后的希望(最新)

热门文章

  1. STL容器的并集(set_union)、交集(set_intersection)和差集(set_difference)函数的使用
  2. 关于结构化,半结构化,非结构化数据的理解
  3. 共同父域下的单点登录
  4. python做web后端_最简易的python web框架的后端实现
  5. python中bool函数用法_在python中bool函数的取值方法
  6. 第k短路----A*算法
  7. 【VBA研究】输出PDF文件合并时出错
  8. android 获取摄像头像素
  9. js-多个果冻按钮之当前果冻按钮弹性特效
  10. arm二进制文件转换成c语言,转换非常简单的ARM指令将二进制/十六进制(Converting very simple ARM i...