You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin字符串数组过滤:Android扫码自动打开HTTPS链接方案

解决方案:二维码扫描结果过滤与Chrome打开链接

1. 判断扫描结果是否为HTTPS链接

可以通过两种方式判断:基础字符串匹配或更严谨的正则校验:

  • 基础匹配(快速判断是否包含HTTPS前缀):
val scanResult = "扫描得到的字符串"
val isHttpsLink = scanResult.startsWith("https://", ignoreCase = true)
  • 正则校验(适配所有合法HTTP/HTTPS URL格式):
val urlRegex = "^https?://(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$".toRegex(RegexOption.IGNORE_CASE)
val isValidLink = urlRegex.matches(scanResult)

2. 调用Chrome打开链接

通过指定Chrome包名创建Intent,确保跳转至Chrome;同时处理Chrome未安装的异常情况:

fun openLinkInChrome(context: Context, url: String) {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
    // 指定Chrome应用包名
    intent.setPackage("com.android.chrome")
    try {
        context.startActivity(intent)
    } catch (e: ActivityNotFoundException) {
        // Chrome未安装时, fallback到系统默认浏览器
        intent.setPackage(null)
        context.startActivity(intent)
    }
}

完整整合示例

将判断与跳转逻辑结合,放在扫描结果的回调处理中:

fun processScanResult(scanResult: String, context: Context) {
    val urlRegex = "^https?://(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$".toRegex(RegexOption.IGNORE_CASE)
    if (urlRegex.matches(scanResult)) {
        openLinkInChrome(context, scanResult)
    } else {
        // 非链接结果的处理逻辑,比如提示用户
        Toast.makeText(context, "扫描结果不是有效链接", Toast.LENGTH_SHORT).show()
    }
}

注意事项

  • 在AndroidManifest.xml中添加网络权限(虽然打开链接的是Chrome,但建议声明):
<uses-permission android:name="android.permission.INTERNET" />
  • 扫描结果可能包含首尾空格,建议先调用scanResult.trim()预处理。

内容的提问来源于stack exchange,提问作者egeKasal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:20:01