需 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,一般是当前移动应用无打开对应小程序的权限,请确认