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