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

类 DCUniMPSDK

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

DCUniMPSDK 对象的方法介绍

DCUniMPSDK.getInstance()

获取SDK实例

参数说明

返回值

类型 说明
class DCUniMPSDK对象

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

sdk初始化

参数说明

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

返回值

示例

  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 DCUniMPSDK.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 新增 2.7.13+
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().setDefMenuButtonClickCallBack(callBack)

设置menu点击事件回调接口

参数说明

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

callback返回参数说明

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

返回值

示例

  1. DCUniMPSDK.getInstance().setDefMenuButtonClickCallBack(new DCUniMPSDK.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().getCurrentPageUrl()

2.6.6开始支持此功能

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

参数说明

返回值

类型 说明
String 页面url

DCUniMPSDK.getInstance().startApp(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

返回值

示例

  1. // 启动小程序
  2. try {
  3. DCUniMPSDK.getInstance().startApp(context,"__UNI__04E3A11")
  4. } catch (Exception e) {
  5. e.printStackTrace();
  6. }
  1. // 启动小程序打开指定页面
  2. try {
  3. DCUniMPSDK.getInstance().startApp(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. DCUniMPSDK.getInstance().startApp(context, "__UNI__04E3A11", arguments);
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. }

DCUniMPSDK.getInstance().getRuningAppid()

2.6.3开始支持此功能

获取正在运行的uni小程序appid

参数说明

返回值

类型 说明
String 正在运行的uni小程序appid 返回null表示未启动应用或应用未初始化完毕。

DCUniMPSDK.getInstance().closeCurrentApp()

2.6.3开始支持此功能

关闭当前正在运行的uni小程序

参数说明

返回值

类型 说明
boolean 返回true表示关闭成功。false表示失败。

DCUniMPSDK.getInstance().setUniMPOnCloseCallBack(callBack)

2.6.3开始支持此功能

小程序被关闭事件监听

参数说明

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

callback返回参数说明

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

返回值

Tips:

如果您想关闭A小程序后紧接着打开B小程序,在监听小程序被关闭的方法中操作是比较好的时机;

示例:

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

DCUniMPSDK.getInstance().isExistsApp(appid)

2.7.1 开始支持此功能

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

参数说明

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

返回值

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

DCUniMPSDK.getInstance().getAppVersionInfo(appid)

2.6.6开始支持此功能

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

参数说明

参数 类型 必填 说明
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().sendUniMPEvent(event, data)

2.6.10开始支持此功能

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

参数说明

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

返回值

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

示例:

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

DCUniMPSDK.getInstance().setOnUniMPEventCallBack(callBack)

2.6.10开始支持此功能

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

参数说明

参数 类型 必填 说明
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 DCUniMPSDK.IOnUniMPEventCallBack() {
  7. @Override
  8. public void onUniMPEventReceive(String event, Object data, DCUniMPJSCallback callback) {
  9. callback.invoke( "测试数据");
  10. }
  11. });

类 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. .build();

DCSDKInitConfig.Builder 对象的方法介绍

setCapsule(isCapsule)

设置是否使用胶囊按钮

注意

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

参数说明

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

setEnableBackground(isEnableBackground)

2.8.0 版本开始支持此功能

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

参数说明

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

注意事项

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

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

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

setMenuDefFontColor(menuDefFontColor)

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

参数说明

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

setMenuDefFontSize(menuDefFontSize)

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

参数说明

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

setMenuDefFontWeight(menuDefFontWeight)

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

参数说明

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

setMenuActionSheetItems(list)

设置默认菜单按钮items

参数说明

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

类MenuActionSheetItem

构造函数 MenuActionSheetItem(title, id)

参数说明

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

示例

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

接口 IDCUniMPAppSplashView

自定义splashView接口类

IDCUniMPAppSplashView 接口方法介绍

getSplashView(context, appid)

splash创建时会调用此函数

参数说明

参数 类型 说明
context Context 上下文
String appid 小程序appid (2.6.6+新增)

返回值

类型 说明
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 2.6.10+新增

小程序js回调接口

invoke(data)

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

参数说明

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

返回值

invokeAndKeepAlive(data)

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

参数说明

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

返回值

DCUniMPPermissionUtil

2.8.0 开始支持

小程序权限申请工具

requestPermissions(activity, permissions, requestCode)

权限申请

参数说明

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

返回值