Android拦截html链接事件

Dear 丶 2022-06-07 00:23 253阅读 0赞

在一个大的Android项目中,由于客户端来不及更新和实现,经常会内嵌一些网页(在一些大型的互联网公司,PC的产品总是跑在客户端的前面),比如活动页面,通常可以内嵌用html5实现的页面,可以适配手机。但是这些网页中有好多链接,但是这些链接有些内容有是我们客户端已经实现的,比如有一个注册链接,其实客户端也实现了注册功能,我们不想再继续跳转到网页注册,而是打开客户端某个注册Activity,可以通过以下方式来实现:

html文件

将html文件放在assets文件夹下(也可以放在服务端,只需要修改java文件要加载的url即可),在网页中可以使用href也可以使用onClick实现链接。

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,maximum-scale=1.0"><!--这是手机头部声明-->
  6. <title>Text页面</title>
  7. </head>
  8. <body>
  9. <nav>
  10. <ul class="nav">
  11. <li>
  12. <a href="http://baidu.com" title="第一项">我是第一项</a>
  13. </li>
  14. <li>
  15. <a href="#" title="第二项">我是第二项</a>
  16. </li>
  17. </ul>
  18. </nav>
  19. </body>
  20. </html>

xml 布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
  3. <WebView android:id="@+id/wv_lorry" android:layout_width="match_parent" android:layout_height="match_parent"/>
  4. </LinearLayout>

java代码

在android中,拦截你感兴趣的链接,然后做自己的处理。

  1. public class MagicBoxActivity extends AppCompatActivity {
  2. private static String TAG = "Chunna==MagicBox";
  3. private WebView wvLorry;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_magic_box);
  8. wvLorry = (WebView)findViewById(R.id.wv_lorry);
  9. wvLorry.loadUrl("file:///android_asset/text.html");//加载assets文件夹下网页
  10. wvLorry.setWebViewClient(new MyWebViewClient());
  11. }
  12. // 监听所有点击的链接,如果拦截到我们需要的,就跳转到相对应的页面。
  13. private class MyWebViewClient extends WebViewClient {
  14. @Override
  15. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  16. Log.d(TAG,"拦截到网页的点击事件url = "+url);
  17. if (url != null && url.contains("baidu.com")) {
  18. Log.d(TAG,"拦截到需要的URL");
  19. //实现我们自己的处理,例如跳转到另一个Activity
  20. return true;
  21. }
  22. return super.shouldOverrideUrlLoading(view, url);
  23. }
  24. @Override
  25. public void onPageFinished(WebView view, String url) {
  26. view.getSettings().setJavaScriptEnabled(true);
  27. super.onPageFinished(view, url);
  28. }
  29. }
  30. }

发表评论

表情:
评论列表 (有 0 条评论,253人围观)

还没有评论,来说两句吧...

相关阅读

    相关 HTML——超

             一、What?——什么是超链接     先说一下我个人目前对“超链接”的理解,就两字:跳转     哈哈,我个人的理解好像解释的有点简单粗暴了,比原词还

    相关 Android拦截html事件

    在一个大的Android项目中,由于客户端来不及更新和实现,经常会内嵌一些网页(在一些大型的互联网公司,PC的产品总是跑在客户端的前面),比如活动页面,通常可以内嵌用html5

    相关 html 邮件

    在网页中可以设置如“联系我们”、“问题反馈”等所谓的邮箱链接,类似网页超链接,只是可以直接打开默认邮箱程序。 使用<a href="mailto:youEMail@xxx.y