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
相关产品推荐
相关产品推荐

