dcloud html5 sdk,DCloud H5与Android Native的交互--5+ SDK插件开发
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插件开发相关推荐
- android sdk eclipse没导入,Android—新的eclipse导入SDK出错解决办法
原先系统崩溃,重装系统,加入一块内存条,从32位变成62位,原先的eclipse用不了:去官网下载64位的eclipse,安装,用一样的方法导入SDK.这时候肯定会提示错误,如下: 1.This An ...
- android视频编辑sdk官网,LanSoEditor_common ---android平台的视频编辑SDK
android平台短视频技术之 视频编辑的经验分享. android平台短视频技术之 视频编辑的经验分享. 提示一: 各位看官,这里分享的是视频编辑,即剪切/拼接/分离/合并/涂鸦/标记/叠加/滤镜等 ...
- android h5使用缓存_Android SDK 的 H5 打通方案演进 | 数据采集
一.前言 近年来,混合开发越来越流行,App 与 H5 的打通需求也越来越迫切. 那什么是 App 与 H5 打通呢? 所谓 "打通",是指 H5 集成 JavaScript 数据 ...
- Android 接入支付宝在手机未安装支付宝客户端的情况下掉不起支付宝sdk的h5页面
Android 接入支付宝在手机未安装支付宝客户端的情况下掉不起支付宝sdk的h5页面 最近公司项目需要对接支付宝移动支付,按照支付宝开发文档一步步往项目中集成,一开始还是比较顺利的,因为测试手机上安 ...
- Android SDK 的 H5 打通方案演进 | 数据采集
一.前言 近年来,混合开发越来越流行,App 与 H5 的打通需求也越来越迫切. 那什么是 App 与 H5 打通呢? 所谓 "打通",是指 H5 集成 JavaScript 数据 ...
- 用WEB技术栈开发NATIVE应用:WEEX SDK原理详解
摘要: WEEX依旧采取传统的web开发技术栈进行开发,同时app在终端的运行体验不输native app.其同时解决了开发效率.发版速度以及用户体验三个核心问题.那么WEEX是如何实现的?目前WEE ...
- Android扩展类方法,Android 扩展 uni小程序SDK 原生能力
Android 扩展 uni小程序SDK 原生能力 概述 本文档主要介绍如何扩展 uni小程序SDK 原生能力. 什么是扩展原生能力? 扩展原生能力指的是将您原生开发的功能通过一定规范暴露给 uni小 ...
- h5+app Android上架华为应用市场被拒原因“拒绝获取手机权限后app会闪退“以及隐私政策问题
h5+app Android上架华为应用市场被拒原因"拒绝获取手机权限后app会闪退" 华为应用市场报错:拒绝获取手机权限后app会闪退,此问题解决方案如下: 在manifest. ...
- H5、React Native、Native应用对比分析
@王利华,vczero "存在即合理".凡是存在的,都是合乎规律的.任何新事物的产生总要的它的道理:任何新事物的发展总是有着取代旧事物的能力.React Native来的正是时候, ...
最新文章
- SLAM从0到1——状态估计之最小二乘问题解法:最速下降法、牛顿法、高斯牛顿法、LM法...
- 最聪明女生集结清华,挑战人工智能
- 浅析Java.lang.Runtime类
- 从构造函数看java.io
- 平行志愿遵循分数优先php,2020平行志愿的录取规则是什么有哪些优势
- 数据分析,怎么做才算到位?
- idea 设置默认 jdk
- 【Jmeter自学】Linux环境下Jmeter运行
- 第11章 支撑向量机 SVM 学习笔记 下 SVM思路解决回归问题
- Deepin 的远程连接
- 王道训练营3月11日
- ipad上的html编辑器,iPad Pro变生产力工具,你还缺这个轻量级浏览器端代码编辑器...
- 使用表格制作流量查询表
- 基于公共政策的城市停车规划
- 浅谈Mediator仲裁者模式
- 桌面虚拟化-精彩刚刚开始
- Wave VR Native SDK学习(一)
- Linux虚拟机CentOS7挂机问题
- Python数据挖掘(1)亲和性分析
- Anaconda 虚拟环境:pyuic之找不到模块之最后的希望(最新)
热门文章
- STL容器的并集(set_union)、交集(set_intersection)和差集(set_difference)函数的使用
- 关于结构化,半结构化,非结构化数据的理解
- 共同父域下的单点登录
- python做web后端_最简易的python web框架的后端实现
- python中bool函数用法_在python中bool函数的取值方法
- 第k短路----A*算法
- 【VBA研究】输出PDF文件合并时出错
- android 获取摄像头像素
- js-多个果冻按钮之当前果冻按钮弹性特效
- arm二进制文件转换成c语言,转换非常简单的ARM指令将二进制/十六进制(Converting very simple ARM i...