根据微信开发者文档,实现微信小程序跳转需要获取小程序提供的Scheme URL。官方文档说要通过html动态跳转,经过测试发现,WebView无法识别该Scheme,最终通过Intent方式成功实现跳转。以下是实现代码:
kotlin
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
WeChatMiniProgramLauncher()
}
}
}
@Composable
fun WeChatMiniProgramLauncher() {
val context = LocalContext.current
var launchStatus by remember { mutableStateOf<String?>(null) }
LaunchedEffect(Unit) {
try {
val schemeUrl = "weixin://dl/business/?appid=*APPID*&path=*PATH*&query=*QUERY*&env_version=*ENV_VERSION*"
context.startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(schemeUrl))
)
} catch (e: ActivityNotFoundException) {
launchStatus = "请安装微信客户端"
} catch (e: Exception) {
launchStatus = "打开失败: ${e.message}"
}
}
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
launchStatus?.let { status ->
Text(
text = status,
color = MaterialTheme.colorScheme.error
)
} ?: Text("正在打开微信小程序...")
}
}
注意:此实现需要使用小程序的明文Scheme URL,需要确保小程序已开启相关权限。
自 2023 年 12 月 19 日起,对URL Scheme进行升级,详细调整说明可见《URL Scheme 和 URL
Link优化公告》。改动点概览如下:
支持开发者在原有加密 URL Scheme 后面拼接参数;
新增明文 URL Scheme,开发者无需调用接口可自行拼接生成明文Scheme;
取消 URL Scheme 一人一链的限制,支持同一条连接被多名用户访问;
每个小程序每天 URL Scheme 和 URL Link 总打开次数上限为300万。