在很多应用中都会关联一些微信小程序,如果通过App将微信小程序打开或者分享能。下面分别给介绍一下。
1.如何通过应用程序拉起小程序。
首先我们需要在AndroidStudio中集成微信的开发工具包截止到发文微信开发工具包已经更新到了6.6.4版本。
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.6.4'
导入之后我们可以通过微信中的openapi中提供的isWXAppInstalled()和getWXAppSupportAPI()方法判断手机中是否已经安装了微信应用程序及是否能够使用微信小程序API。
/**
* 微信小程序是否可用
* @param context 上下文
* @return 是否可用
*/
fun isWXSmallProjectAvilible(context: Context): Boolean {
val api = WXAPIFactory.createWXAPI(context, ThirdPartyConfigureCache.instance.m_wx_app_id)
return if (api.isWXAppInstalled) {
api.wxAppSupportAPI >= Build.MINIPROGRAM_SUPPORTED_SDK_INT
} else {
false
}
}
当判断完之后我们就可以使用微信提供的拉起方法打开微信小程序了。
/**
* 跳转微信小程序
* @param context 上下文
* @param smallProjectId 小程序原始ID
* @param path 拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
* @return
*/
fun openWXSmallProject(@NonNull context: Context,@NonNull smallProjectId: String, @NonNull path: String) : Boolean {
val api = WXAPIFactory.createWXAPI(context, ThirdPartyConfigureCache.instance.m_wx_app_id)
val req = WXLaunchMiniProgram.Req()
req.userName = smallProjectId
req.path = path
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE// 可选打开 开发版,体验版和正式版
return api.sendReq(req)
}
上述代码中需要注意的是miniprogramType设置的是正式版环境,它还包含测试环境及开发环境(预览环境)
public static final int MINIPTOGRAM_TYPE_RELEASE = 0;
public static final int MINIPROGRAM_TYPE_TEST = 1;
public static final int MINIPROGRAM_TYPE_PREVIEW = 2;
2.通过应用程序分享微信小程序,我们使用的是友盟分享框架。框架如何接入请参考友盟官方文档。
fun shareWXSmallProgram(){
val umMin = UMMin("https://www.test.com/")
umMin.setThumb(UMImage(this,R.mipmap.icon))
umMin.title = "友盟分享微信小程序"
umMin.description = "测试友盟分享微信小程序描述字段。"
umMin.path = "实际分享页面地址也就是你想跳转到小程序什么位置。不传默认主页"
umMin.userName = "实际分享小程序的ID"
ShareAction(this@SettingActivity).withMedia(umMin)
.setPlatform(SHARE_MEDIA.WEIXIN)
.setCallback(object : UMShareListener{
override fun onResult(p0: SHARE_MEDIA?) {
TTLog.i(TAG,p0.toString())
}
override fun onCancel(p0: SHARE_MEDIA?) {
TTLog.i(TAG,p0.toString())
}
override fun onError(p0: SHARE_MEDIA?, p1: Throwable?) {
TTLog.i(TAG,p0.toString())
}
override fun onStart(p0: SHARE_MEDIA?) {
TTLog.i(TAG,p0.toString())
}
}).share()
}
上述代码中主要就是username字段和path字段。username为小程序正式ID字符串,而path是分享时想跳转的小程序的具体位置。如果该字段不传或者为空会跳转到小程序首页。