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

Android WebView中点击网页按钮获取URL参数ID并Toast或存储的方法

Android WebView捕获网页跳转URL中的ID并处理

实现步骤

1. 添加网络权限

在AndroidManifest.xml中添加INTERNET权限,确保WebView能正常加载网页:

<uses-permission android:name="android.permission.INTERNET" />

2. 布局中添加WebView

在对应布局文件(比如activity_main.xml)中添加WebView组件:

<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

3. 初始化WebView并拦截URL跳转

在Activity/Fragment中初始化WebView,通过WebViewClient拦截网页跳转,提取目标ID:

import android.os.Bundle
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    // 用于存储提取到的ID
    private var targetId: String? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val webView = findViewById<WebView>(R.id.webView)
        // 启用JavaScript(适配网页交互需求)
        webView.settings.javaScriptEnabled = true
        // 设置WebViewClient拦截跳转行为
        webView.webViewClient = object : WebViewClient() {
            override fun shouldOverrideUrlLoading(
                view: WebView?,
                request: WebResourceRequest?
            ): Boolean {
                request?.url?.let { url ->
                    val urlStr = url.toString()
                    // 匹配目标域名的跳转
                    if (urlStr.startsWith("https://sampleweb.com")) {
                        // 提取?后的ID(适配当前URL格式:无参数key,直接为?XXX)
                        val query = url.query
                        query?.takeIf { it.isNotEmpty() }?.let { id ->
                            // 存储ID到变量
                            targetId = id
                            // 用Toast展示ID
                            Toast.makeText(this@MainActivity, "提取到的ID:$id", Toast.LENGTH_SHORT).show()
                            // 返回true拦截WebView默认跳转,如需加载新页面则返回false
                            return true
                        }
                    }
                }
                // 其他URL按默认逻辑处理
                return super.shouldOverrideUrlLoading(view, request)
            }
        }

        // 加载初始网页
        webView.loadUrl("https://sampleweb.com")
    }
}

关键说明

  • shouldOverrideUrlLoading方法会在WebView即将跳转URL时触发,返回true表示拦截跳转并由App自行处理;返回false则让WebView继续加载目标页面。
  • 若后续URL格式变为带参数key的形式(比如https://sampleweb.com?id=XXX),可替换为url.getQueryParameter("id")提取ID。
  • 存储的targetId变量可直接用于App后续业务逻辑。

内容的提问来源于stack exchange,提问作者Don Min Soo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:40:26