unimp小程序V2版 (支持同时运行多个小程序)

SDK下载

类 DCUniMPSDK

uni小程序SDK入口句柄,该类为工厂模式。通过getInstance()获取对象实例!

DCUniMPSDK 对象的方法介绍

DCUniMPSDK.getInstance()

获取SDK实例

参数说明

返回值

类型 说明
class DCUniMPSDK对象

DCUniMPSDK.getInstance().initialize(context, config, callback)

sdk初始化

参数说明

参数 类型 必填 说明
Context Context 上下文
config DCSDKInitConfig 初始化配置信息类
callback IDCUniMPPreInitCallback 初始化完毕回调接口

返回值

示例

  1. MenuActionSheetItem item = new MenuActionSheetItem("关于", "gy");
  2. List<MenuActionSheetItem> sheetItems = new ArrayList<>();
  3. sheetItems.add(item);
  4. DCSDKInitConfig config = new DCSDKInitConfig.Builder()
  5. .setCapsule(true)
  6. .setMenuDefFontSize("16px")
  7. .setMenuDefFontColor("#ff00ff")
  8. .setMenuDefFontWeight("normal")
  9. .setMenuActionSheetItems(sheetItems)
  10. .build();
  11. DCUniMPSDK.getInstance().initialize(this, config, new IDCUniMPPreInitCallback() {
  12. @Override
  13. public void onInitFinished(boolean isSuccess) {
  14. Log.e("unimp", "onInitFinished-----------"+isSuccess);
  15. }
  16. });

DCUniMPSDK.getInstance().isInitialize()

SDK是否初始化成功

参数说明

返回值

类型 说明
boolean true表示初始化成功 false表示失败

DCUniMPSDK.getInstance().getAppBasePath(context)

获取uni小程序运行路径

参数说明

参数 类型 必填 说明
context Context 上下文

返回值

类型 说明
String uni小程序运行路径 路径格式: “/xxx/xxx/宿主包名/files/apps/“

Tips

此接口用于宿主管理应用资源或自释放wgt包集成uni小程序。

自释放wgt包集成uni小程序

宿主通过zip解压wgt包资源。主动释放到uni小程序运行路径下。需要自创建文件应用的APPID/www/的目录

路径格式 : “uni小程序运行路径/应用的APPID/www/wgt包中的资源”

示例

  1. "/xxx/xxx/宿主包名/files/apps/__UNI__04E3A11/www/__UNI__04E3A11.wgt包中的资源"

DCUniMPSDK.getInstance().releaseWgtToRunPathFromePath(appid, wgtPath, callBack)

将wgt包中的资源文件释放到uni小程序运行时路径下。

参数说明

参数 类型 必填 说明
appid String uni小程序的id
wgtPath String uni小程序应用资源包路径 仅支持SD路径 不支持assets
callback ICallBack 拷贝状态回调

wgtPath参数说明

uni小程序应用资源包路径。例如 “xxx/xxx/xxx/UNI04E3A11.wgt”.

Tips:

  • 将不再强校验wgt文件名称。确保appid参数与实际wgt包相符即可。
  • 注意使用releaseWgtToRunPathFromePath方法需要申请存储权限:android.permission.WRITE_EXTERNAL_STORAGE

callback返回参数说明

参数 类型 说明
code int code为1时成功; code为-1时不成功
pArgs Object 回调信息 需要判断是否为空

返回值

示例

  1. String wgtPath = context.getExternalCacheDir().getPath()+"/__UNI__04E3A11.wgt";
  2. DCUniMPSDK.getInstance().releaseWgtToRunPathFromePath("__UNI__04E3A11", wgtPath, new ICallBack() {
  3. @Override
  4. public Object onCallBack(int code, Object pArgs) {
  5. if(code ==1) {//释放wgt完成
  6. try {
  7. DCUniMPSDK.getInstance().startApp(context, "__UNI__04E3A11");
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. }
  11. } else{//释放wgt失败
  12. Toast.makeText(context, "资源释放失败", Toast.LENGTH_SHORT).show();
  13. }
  14. return null;
  15. }
  16. });

DCUniMPSDK.getInstance().openUniMP(context, appid, splashClass, redirectPath, arguments)

启动uni小程序,确保已初始化完毕再调用!可通过DCUniMPSDK.getInstance().isInitialize()判断。

参数说明

参数 类型 必填 说明
context Context 上下文
appid String uni小程序应用id
splashClass IDCUniMPAppSplashView 自定义splashView接口类,再次启动已启动的小程序该参数失效
redirectPath String uni小程序页面直达地址,再次启动已启动的小程序该参数失效
arguments JSONObject uni小程序启动参数 应用启动后通过plus.runtime.arguments取值。

redirectPath参数说明

uni小程序页面直达地址。宿主可通过扫码、scheme、网络获取等形式获取相关数据。拼写redirectPath参数,调用startApp实现启动uni小程序直达逻辑。

redirectPath目前由小程序开发者提供。后续SDK将提供分享链接等接口数据。待完善!

格式

redirectPath = pagePath(uni小程序页面路径)+?+query(页面携带参数)

  1. pages/component/scroll-view/scroll-view?a=1&b=2&c=3

返回值

类型 说明
IUniMP unimp小程序实例化接口对象

示例

  1. // 启动小程序
  2. try {
  3. IUniMP unimp = DCUniMPSDK.getInstance().openUniMP(context,"__UNI__04E3A11")
  4. } catch (Exception e) {
  5. e.printStackTrace();
  6. }
  1. // 启动小程序打开指定页面
  2. try {
  3. IUniMP unimp = DCUniMPSDK.getInstance().openUniMP(context,"__UNI__04E3A11", MySplashView.class, "pages/component/scroll-view/scroll-view?a=1&b=2&c=3");
  4. } catch (Exception e) {
  5. e.printStackTrace();
  6. }
  1. // 启动小程序并传入参数 "Hello uni microprogram"
  2. try {
  3. JSONObject arguments = new JSONObject();
  4. arguments.put("MSG","Hello uni microprogram");
  5. IUniMP unimp = DCUniMPSDK.getInstance().openUniMP(context, "__UNI__04E3A11", arguments);
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. }

DCUniMPSDK.getInstance().isExistsApp(appid)

检查当前appid小程序是否已释放wgt资源 可用来检查当前appid资源是否存在

参数说明

参数 类型 必填 说明
appid String 小程序appid

返回值

类型 说明
boolean true表示存在 false表示不存在

DCUniMPSDK.getInstance().getAppVersionInfo(appid)

获取已运行过的小程序应用版本信息,没有运行过的小程序是无法正常获取到版本信息的。返回值需要判空处理!!!

参数说明

参数 类型 必填 说明
appid String 小程序appid

返回值

类型 说明
JSONObject uni小程序版本信息 无法获取到指定appid信息会返回null.需要判空!!!

返回值JSONObject格式说明

  1. {
  2. "name": "1.0.0", //versionName
  3. "code": "100" //versionCode
  4. }

示例:

  1. JSONObject jsonObject = DCUniMPSDK.getInstance().getAppVersionInfo("__UNI__04E3A11");
  2. if(jsonObject != null) {
  3. Logger.d("__UNI__04E3A11版本信息为"+jsonObject.toString());
  4. }

DCUniMPSDK.getInstance().setDefMenuButtonClickCallBack(callBack)

设置menu点击事件回调接口

参数说明

参数 类型 必填 说明
callBack IMenuButtonClickCallBack 菜单被点击事件回调

callback返回参数说明

参数 类型 说明
appid String uni小程序应用id
id String 菜单按钮id

返回值

示例

  1. DCUniMPSDK.getInstance().setDefMenuButtonClickCallBack(new IMenuButtonClickCallBack() {
  2. @Override
  3. public void onClick(String appid, String id) {
  4. switch (id) {
  5. case "gy":{
  6. Log.e("unimp", "点击了关于" + appid);
  7. break;
  8. }
  9. }
  10. }
  11. });

DCUniMPSDK.getInstance().setUniMPOnCloseCallBack(callBack)

设置小程序被关闭事件监听

参数说明

参数 类型 必填 说明
callBack IUniMPOnCloseCallBack 监听小程序被关闭事件

callback返回参数说明

参数 类型 说明
appid String uni小程序应用id

返回值

示例:

  1. DCUniMPSDK.getInstance().setUniMPOnCloseCallBack(new IUniMPOnCloseCallBack() {
  2. @Override
  3. public void onClose(String appid) {
  4. Log.e("unimp", appid+"被关闭了");
  5. }
  6. });

DCUniMPSDK.getInstance().setCapsuleCloseButtonClickCallBack(callBack)

设置小程序胶囊按钮点击”X”关闭事件监听,设置后原关闭逻辑将不再执行!交由宿主实现相关逻辑。v3.2.6

参数说明

参数 类型 必填 说明
callBack IDCUniMPOnCapsuleCloseButtontCallBack 小程序胶囊按钮点击”X”事件

callback返回参数说明

参数 类型 说明
appid String uni小程序应用id

返回值

示例:

  1. DCUniMPSDK.getInstance().setCapsuleCloseButtonClickCallBack(new IDCUniMPOnCapsuleCloseButtontCallBack() {
  2. @Override
  3. public void closeButtonClicked(String appid) {
  4. Log.e("unimp", appid+"胶囊点击了关闭按钮");
  5. }
  6. });

DCUniMPSDK.getInstance().setCapsuleMenuButtonClickCallBack(callBack)

设置小程序胶囊按钮点击”…”菜单事件监听,设置后原菜单弹窗逻辑将不再执行!交由宿主实现相关逻辑。v3.2.6

参数说明

参数 类型 必填 说明
callBack IDCUniMPOnCapsuleMenuButtontCallBack 小程序胶囊按钮点击”…”事件

返回值

示例:

  1. DCUniMPSDK.getInstance().setCapsuleMenuButtonClickCallBack(new IDCUniMPOnCapsuleMenuButtontCallBack() {
  2. @Override
  3. public void menuButtonClicked(String appid) {
  4. Log.e("unimp", appid+"胶囊点击了菜单按钮");
  5. Intent intent = new Intent(context, MenuActivity.class);
  6. DCUniMPSDK.getInstance().startActivityForUniMPTask(appid, intent);
  7. }
  8. });

DCUniMPSDK.getInstance().startActivityForUniMPTask(appid, intent)

启动一个Activity,当前Activity运行在小程序任务堆栈中。进程还是属于宿主进程。可正常使用宿主内存数据!关闭当前activity还会回到小程序。v3.2.6

参数说明

参数 类型 必填 说明
appid String 小程序appid
intent android.content.Intent 安卓原生Intent 需要配置要启动的activity信息

返回值

类型 说明
boolean true表示初始化成功 false表示失败

示例:

  1. DCUniMPSDK.getInstance().setCapsuleMenuButtonClickCallBack(new IDCUniMPOnCapsuleMenuButtontCallBack() {
  2. @Override
  3. public void menuButtonClicked(String appid) {
  4. Log.e("unimp", appid+"胶囊点击了菜单按钮");
  5. Intent intent = new Intent(context, MenuActivity.class);
  6. DCUniMPSDK.getInstance().startActivityForUniMPTask(appid, intent);
  7. }
  8. });

DCUniMPSDK.getInstance().setOnUniMPEventCallBack(callBack)

设置监听小程序发送给宿主的事件

参数说明

参数 类型 必填 说明
callBack IOnUniMPEventCallBack 小程序触发event事件接口

返回值

示例

  1. //小程序js层发送事件给宿主
  2. uni.sendNativeEvent("aa",a, function(e){
  3. console.log("sendNativeEvent-----------回调"+JSON.stringify(e));
  4. });
  5. //JAVA监听小程序发来的事件 通过callback返回参数
  6. DCUniMPSDK.getInstance().setOnUniMPEventCallBack(new IOnUniMPEventCallBack() {
  7. @Override
  8. public void onUniMPEventReceive(String appid, String event, Object data, DCUniMPJSCallback callback) {
  9. callback.invoke( "测试数据");
  10. }
  11. });

接口 IUniMP

uni小程序实例化接口对象。通过openUniMP获取。

IUniMP 接口的方法介绍

IUniMP.getAppid()

获取小程序的appid 唯一标识

参数说明

返回值

类型 说明
String 小程序的appid

IUniMP.getCurrentPageUrl()

获取运行时uni小程序的当前页面url 可用于页面直达等操作的地址。

参数说明

返回值

类型 说明
String 页面url

IUniMP.sendUniMPEvent(event, data)

宿主主动触发事件到正在运行的小程序。注意:需要已有小程序在运行才可成功

参数说明

参数 类型 必填 说明
event String 触发事件的event
data String或JSON 事件的携带参数

返回值

类型 说明
boolean true表示事件通知成功。false表示失败。可以log查看原因。

示例:

  1. //JAVA原生层
  2. JSONObject data = new JSONObject();
  3. data.put("sj", "点击了关于");
  4. IUniMP.sendUniMPEvent("gy", data);
  5. //uni小程序JS代码 监听宿主触发给小程序的事件
  6. uni.onNativeEventReceive(function(event, data){
  7. console.log("onNativeEventReceive----="+event);
  8. });

IUniMP.isRuning()

判定当前小程序是否运行中

参数说明

返回值

类型 说明
boolean true表示运行中 false表示已停止运行

IUniMP.showUniMP()

当前小程序显示到前台。仅开启后台模式生效!v3.2.6+

参数说明

返回值

类型 说明
boolean true成功 false失败

IUniMP.hideUniMP()

当前小程序退到后台。仅开启后台模式生效! v3.2.6+

参数说明

返回值

类型 说明
boolean true成功 false失败

IUniMP.closeUniMP()

关闭当前小程序 v3.2.6+

参数说明

返回值

类型 说明
boolean true成功 false失败

类 DCSDKInitConfig

uni小程序SDK初始化信息类。需通过DCSDKInitConfig.Builder构建DCSDKInitConfig对象。

类 DCSDKInitConfig.Builder

DCSDKInitConfig的构建者。通过DCSDKInitConfig.Builder().build()创建DCSDKInitConfig实例。

示例

  1. DCSDKInitConfig config = new DCSDKInitConfig.Builder()
  2. .setCapsule(true)
  3. .setMenuDefFontSize("16px")
  4. .setMenuDefFontColor("#ff00ff")
  5. .setMenuDefFontWeight("normal")
  6. .setMenuActionSheetItems(sheetItems)
  7. .setNJS(false)
  8. .build();

DCSDKInitConfig.Builder 对象的方法介绍

DCSDKInitConfig.Builder.setCapsule(isCapsule)

设置是否使用胶囊按钮

注意

uniapp页面没有配置navigationBar或titleNView则不会显示胶囊按钮 两者是绑定关系

参数说明

参数 类型 默认值 说明
isCapsule boolean true true使用胶囊按钮 false不使用

DCSDKInitConfig.Builder.setCapsuleButtonStyle(style)

设置胶囊按钮Style

参数说明

参数 类型 默认值 说明
style DCUniMPCapsuleButtonStyle null 胶囊按钮风格样式

示例

  1. DCUniMPCapsuleButtonStyle style = new DCUniMPCapsuleButtonStyle();
  2. style.setBackgroundColor("#990099");
  3. DCSDKInitConfig config = new DCSDKInitConfig.Builder()
  4. .setCapsule(true)
  5. .setCapsuleButtonStyle(style)
  6. .build();

setEnableBackground(isEnableBackground)

设置小程序退出时是否进入后台

参数说明

参数 类型 默认值 说明
isEnableBackground boolean false true表示小程序退出时进入后台 false表示直接退出

注意事项

开启小程序后台运行功能后,也将开启多任务窗口。效果如下图!如果你的需求不需要小程序有独立任务窗口。那请关闭小程序后台运行功能。 后台模式与多任务窗口两者功能目前是相辅相成。不可分割。

unimp小程序V2版 (支持同时运行多个小程序) - 图1

2.8.4+版本支持设置setEnableBackground为false 去除多任务窗口

setUniMPFromRecents(isFromRecents)

设置小程序任务窗口是否显示,仅在后台模式下生效 v3.2.6+

参数说明

参数 类型 默认值 说明
isFromRecents boolean true true显示任务窗口 false不显示 仅在后台模式下生效

注意事项

该api仅在后台模式下生效!

DCSDKInitConfig.Builder.setMenuDefFontSize(menuDefFontSize)

设置菜单默认按钮字体大小

参数说明

参数 类型 默认值 说明
menuDefFontSize String “22px” 按钮上文字大小 数字加”px”格式字符串

DCSDKInitConfig.Builder.setMenuDefFontWeight(menuDefFontWeight)

设置菜单默认按钮上文字的粗细

参数说明

参数 类型 默认值 说明
menuDefFontWeight String “normal” 按钮上文字的粗细 可取值:”normal”标准字体;”bold”加粗字体。

DCSDKInitConfig.Builder.setMenuActionSheetItems(list)

设置默认菜单按钮items

参数说明

参数 类型 默认值 说明
list List 默认菜单按钮列表。设置setCapsule为true生效。

类 MenuActionSheetItem

构造函数 MenuActionSheetItem(title, id)

参数说明

参数 类型 默认值 说明
title String 默认菜单按钮文字文案
id String 默认菜单按钮id

示例

  1. MenuActionSheetItem item = new MenuActionSheetItem("关于", "gy");

DCSDKInitConfig.Builder.setNJS(boolean enable)

设置是否支持NJS功能,默认关闭

参数说明

参数 类型 默认值 说明
enable boolean false 设置是否支持NJS功能,默认关闭

接口 IDCUniMPAppSplashView

自定义splashView接口类

IDCUniMPAppSplashView 接口方法介绍

getSplashView(context, appid)

splash创建时会调用此函数

参数说明

参数 类型 说明
context Context 上下文
String appid 小程序appid (2.6.6+新增)
String appName 小程序名称 注意需要判空 (3.3.5+新增)
String icon 小程序图标 网络地址或本地图片地址 注意需要判空 (3.3.5+新增)

返回值

类型 说明
View 自定义splashView

onCloseSplash(rootView)

splash关闭时会调用此函数

参数说明

参数 类型 说明
rootView ViewGroup splashView的父容器

返回值

示例

  1. public class MySplashView implements IDCUniMPAppSplashView {
  2. FrameLayout splashView;
  3. @Override
  4. public View getSplashView(Context context, String appid) {
  5. splashView = new FrameLayout(context);
  6. splashView.setBackgroundColor(Color.BLUE);
  7. return splashView;
  8. }
  9. @Override
  10. public void onCloseSplash(ViewGroup rootView) {
  11. if(rootView != null)
  12. rootView.removeView(splashView);
  13. }
  14. }

接口 DCUniMPJSCallback

小程序js回调接口

DCUniMPJSCallback 的接口函数介绍

DCUniMPJSCallback.invoke(data)

触发js回调(仅一次回调)

参数说明

参数 类型 说明
data String或JSON 回调信息

返回值

DCUniMPJSCallback.invokeAndKeepAlive(data)

触发js回调(可多次回调)

参数说明

参数 类型 说明
data String或JSON 回调信息

返回值

类 DCUniMPCapsuleButtonStyle

胶囊按钮Style

DCUniMPCapsuleButtonStyle 对象的方法介绍

DCUniMPCapsuleButtonStyle.setBackgroundColor(backgroundColor)

设置胶囊按钮背景颜色

参数说明

参数 类型 默认值 说明
backgroundColor string #FFFFFF 胶囊按钮背景颜色 可取值:”#RRGGBB” 和 “rgba(R,G,B,A)” 格式字符串,

DCUniMPCapsuleButtonStyle.setTextColor(textColor)

设置胶囊按钮文案颜色

参数说明

参数 类型 默认值 说明
textColor string #000000 胶囊按钮文案颜色 可取值:”#RRGGBB” 和 “rgba(R,G,B,A)” 格式字符串,

DCUniMPCapsuleButtonStyle.setHighlightColor(highlightColor)

设置胶囊按钮按下状态背景颜色

参数说明

参数 类型 默认值 说明
highlightColor string #CBCCCD 胶囊按钮文案颜色 可取值:”#RRGGBB” 和 “rgba(R,G,B,A)” 格式字符串,

DCUniMPCapsuleButtonStyle.setBorderColor(borderColor)

设置胶囊按钮边框颜色

参数说明

参数 类型 默认值 说明
borderColor string #FFE5E5E5 胶囊按钮文案颜色 可取值:”#RRGGBB” 和 “rgba(R,G,B,A)” 格式字符串,

DCSDKInitConfig.Builder.setMenuDefFontColor(menuDefFontColor)

设置菜单默认按钮文字有颜色

参数说明

参数 类型 默认值 说明
menuDefFontColor String “#000000” 字体颜色 可取值:”#RRGGBB” 和 “rgba(R,G,B,A)” 格式字符串,

DCUniMPPermissionUtil

小程序权限申请工具

requestPermissions(activity, permissions, requestCode)

权限申请

参数说明

参数 类型 说明
activity Activity 加载小程序的Activity对象
permissions String[] 要申请的权限字符串数组
requestCode int 请求码

返回值