# WMPFMiniProgramApi.launchMiniProgram

需 WMPF >= 2.1.0 支持,使用前建议阅读注意事项

启动小程序。

# 调用参数

参数 必填 类型 说明 最低版本
params WMPFStartAppParams 启动小程序参数
forceFullscreen boolean 是否强制全屏显示
landscapeMode LandscapeMode 启动小程序展示方式

参数 必填 类型 说明 最低版本
request WMPFStartAppRequest 启动小程序参数(完整版) 2.2.0

# WMPFStartAppParams

属性 必填 类型 说明 最低版本
appId String 小程序 AppId。需在微信硬件平台上和 hostAppId 绑定过
path String 小程序启动页面路径,不填则为小程序首页
appType WMPFAppType 小程序类型,可选择正式版、体验版、开发版

# WMPFAppType

枚举值 说明
APP_TYPE_RELEASE 正式版小程序
APP_TYPE_DEV 开发版小程序,需要登录用户具备小程序开发权限
APP_TYPE_EXP 体验版小程序,需要登录用户具备小程序体验权限

# LandscapeMode

枚举值 说明
NORMAL 默认展示方式,与微信客户端保持一致
LANDSCAPE 适用于强制横屏,且无法转动屏幕的设备(比如车机)
LANDSCAPE_COMPAT 兼容模式,小程序内容将强制 WMPFUiApi.setWindowRatio 设置的比例显示(声明了resizable=true的小程序除外)
FORCE_COMPAT 强制兼容模式(声明了resizable=true的小程序也不例外)

# DisplayMode

枚举值 说明
NORMAL 默认展示方式,与微信客户端保持一致(小程序显示状态栏和导航栏、小游戏全屏显示)
FULLSCREEN 全屏显示(隐藏状态栏和导航栏)
HIDE_STATUS_BAR 只隐藏状态栏
HIDE_NAVIGATION_BAR 只隐藏导航栏

# WMPFStartAppRequest

属性 必填 类型 说明 最低版本
params WMPFStartAppParams 启动小程序参数
forceFullscreen boolean 是否强制全屏显(已废弃,改用 displayMode)
landscapeMode LandscapeMode 启动小程序展示方式
displayId int 从 Android DisplayManager 中获取到的 displayId,用于指定小程序显示的屏幕。在双屏设备、将小程序嵌入屏幕指定区域可用。
enterPictureInPicture boolean 进入画中画模式,默认 false。画中画模式需要接入方的 ROM 支持,支持方式参考:https://source.android.google.cn/devices/tech/display/pip?hl=zh-cn
zoom float 小程序缩放 2.3.0
ratio float 兼容模式下小程序的高宽比,默认为屏幕长边比上屏幕短边 2.3.0
processId String 【实验性接口,未来可能被废弃】指定小程序运行在 WMPF 的某个 container 进程上,配合 WMPFUiApi.setZoomForProcess 使用。 2.3.0
suspendTimeout int 小程序在后台运行指定秒数后暂停 2.3.0
suicideTimeout int 小程序在后台被暂停指定秒数后结束进程 2.3.0
forceIndexNoRelaunch boolean 设置为 true 时,若小程序已启动且 params.path 为空,将不会跳转页面;设置为 false 时,将跳转到小程序首页 2.3.0
disableOpenAnimation boolean 禁用小程序自带的弹出动画。适合不需要小程序从底下向上弹出动画的场景。 2.3.0
displayMode DisplayMode 指定小程序系统状态栏、导航栏显示模式或全屏。 2.3.0
usingAllowList boolean 只打开小程序列表内的小程序。对于不在小程序列表内的小程序,提示用户无法打开。 2.4.0
floatWindow boolean 使用悬浮窗模式打开小程序 2.4.0
specific WMPFFloatWindowSpecific 小程序浮窗模式,设置小程序 Activity 的 Window 参数,可以将小程序显示到屏幕的某个子区域且区域外透明 2.4.0

# WMPFFloatWindowSpecific

悬浮窗小程序是在 Android 系统内通过 WindowManager.addView 的方式创建的悬浮窗内显示小程序的形态。 悬浮窗小程序的 orientation 和系统屏幕 Display 的 orientation 无关,由小程序自身状态控制(小程序全屏播放视频时会变换到横屏悬浮窗,此时手机/车机屏幕可能还是竖屏显示状态)。

属性 必填 类型 说明 最低版本
landscapeWidth int 横屏悬浮窗宽度,单位 px 2.1.0
landscapeHeight int 横屏悬浮窗高度,单位 px 2.1.0
portraitWidth int 竖屏悬浮窗宽度,单位 px 2.1.0
portraitHeight int 竖屏悬浮窗高度,单位 px 2.1.0
initOrientation/orientation int 悬浮窗初始方向,默认为竖屏 2.1.0
requestFocus boolean 悬浮窗是否申请焦点,默认 true 2.1.0
portraitSpec WMPFFloatWindowOrientationSpecific 竖屏悬浮窗配置 2.4.0
landscapeSpec WMPFFloatWindowOrientationSpecific 横屏悬浮窗配置 2.4.0
cornerRadius float 悬浮窗圆角大小 2.1.0
layer int 悬浮窗层级,值与 WindowManager.LayoutParams.type 对应,默认值为 WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY 2.4.0
preserveLocation 悬浮窗是否保存位置。若保存位置,则本次启动小程序传入的 x、y 将无效,使用原来在后台的悬浮窗小程序被关闭前的坐标。(注意,如果悬浮窗小程序被杀,将不会记录坐标) 2.4.0
closedOnTouchOutside boolean 点击悬浮窗外侧是否自动关闭悬浮窗。 2.4.0

# WMPFFloatWindowOrientationSpecific

悬浮窗横屏或者竖屏的配置。

属性 必填 类型 说明 最低版本
width int 悬浮窗宽度(单位 px) 2.4.0
height int 悬浮窗高度(单位 px) 2.4.0
x int 窗口 x 坐标(单位 px) 2.4.0
y int 窗口 y 坐标(单位 px) 2.4.0
gravity int 悬浮窗 WindowManager.LayoutParams#gravity。 2.4.0
fixedLocations int 浮窗小程序吸附位置,设置后浮窗小程序被拖动后会吸附在最近的指定位置。 2.4.0
dragAreaHeight int 悬浮窗拖拽区域高度,单位 px。 2.4.0
dragBarSize int 悬浮窗拖拽条宽高,单位 px。 2.4.0
dragBarMarginTop int 悬浮窗拖拽条上边距。默认值为 -1,表示上下居中。适用于悬浮窗拖拽条在 dragArea 中不是上下居中的情况。 2.4.0
dragBarDayColor int 悬浮窗拖拽条浅色(日间)模式颜色 ARGB。浅色模式下默认为黑色。 2.4.0
dragBarNightColor int 悬浮窗拖拽条深色(夜间)模式颜色 ARGB。深色模式下默认为白色。 2.4.0
layoutInScreen int 悬浮窗是否在屏幕内布局,而不是在可用区域(即除导航栏状态栏外的区域)内布局。 2.4.0
draggableHorizontally int 是否允许悬浮窗横向拖动 2.4.0
draggableVertically int 是否允许悬浮窗纵向拖动 2.4.0
layoutNoLimits boolean 是否允许悬浮窗部分移动到屏幕外。建议配合 fixedLocation 使用,允许用户拖动悬浮窗到屏幕外后自动吸附到最近的位置。对应 WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS。 2.4.0

# 返回参数

# 示例代码

val miniProgramApi = WMPF.getInstance().getMiniProgramApi()
miniProgramApi.launchMiniProgram(WMPFStartAppParams(
    appId="wxe5f52902cf4de896",
    path="",
    appType=WMPFAppType.APP_TYPE_RELEASE
))

miniProgramApi.launchMiniProgram(WMPFStartAppRequest(WMPFStartAppParams(
    appId="wxe5f52902cf4de896",
    path="",
    appType=WMPFAppType.APP_TYPE_RELEASE
)).apply {
  floatWindow = true
  specific = WMPFFloatWindowSpecific(800, 1000, 1000, 800, 15, 0, 0, true)
})

# 注意

  • WMPF 需要有后台弹出页面权限。
  • 对于体验版和开发版小程序,WMPF 必须要先用户登录之后,且登录的用户具备小程序体验版或者开发版打开权限才能正常打开。
  • 如果弹窗提示 Error Loading WxaAttrs,请确认
    • 可能打开正式版(appType==0),但小程序没有发布过正式版本。小程序正式上线前请根据需要使用 1(开发版)或 2(体验版)。
    • 可能打开开发版(appType==1),但 WMPF 端未扫码登录,或登录用户无开发版权限,或该用户未在工具上上传开发版。
    • 可能打开体验版(appType==2),但 WMPF 端未扫码登录,或登录用户无体验版权限,或小程序当前无体验版。
  • 如果弹窗提示 err:TRANSFER, errCode:-3,一般是当前移动应用无打开对应小程序的权限,请确认