通过Uri跳转Activity(当然对于WebView中的网页同样适用)

来源:互联网 发布:军事小说 知乎 编辑:程序博客网 时间:2024/06/01 07:50

在上班的第二个星期,项目老大,叫我做一个从WebView中的网页跳转到一个新的Activity,当时一脸懵逼,当然只有度娘和google了,在度娘上找到了答案,其实也是非常简单的,我们在平时都是用Intent去跳转,但是竟然没有留意,Intent中可以传递uri进行跳转,下面讲述一个实例:进行展示:

第一步:在AndroidManifest.xml中找到你要跳转的Activity,在该Activity添加过滤器如下图:

这里写图片描述

在此data便签,便是url的配置了。一定要注意path这个参数,一定要先/在跟路径。wr://com.app.wr:8888/app?id=1001此url是一个完整的urlwr:代表的是scheme        协议名称  //在此注意为了从A页面直接跳转到B页面,不要使用网路协议,不然,在跳转是会让用户,选择是跳转那个页面。goods:代表的是host       代表scheme的那个作用域/goodsDetail:代表的是path  指定那个页面8888:代表的port            端口号id:代表的query              代表传递的参数在此第一步的配置就完成了

第二步:那就是A页面跳转到B页面了,在此有两种方式进行跳转(原生跳转和webView的网页跳转),先介绍第一种方式:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("wr://com.app.wr:8888/app?id=1001")));这就完成了原生跳转,如果你要跳转的Activity不需要参数,那在地址中也不用要参数了。我这边只传递了一个id值过去

所运行的截图

这里写图片描述

这里写图片描述

这里写图片描述

第二种方法:在WebView中去跳转

    private String mLoadData = "<html>\n" +            "\n" +            "<head>\n" +            "<title>正在加载数据...</title>\n" +            "\n" +            "</html>";    private String mData = "<html>\n" +            "\n" +            "<head>\n" +            "<title>我的第一个 HTML 页面</title>\n" +            "</head>\n" +            "\n" +            "<body>\n" +            "<p>body 元素的内容会显示在浏览器中。</p>\n" +            "<p>title 元素的内容会显示在浏览器的标题栏中。</p>\n" +            "\n" +            "<a href=\"wr://com.app.wr:8888/app?id=1001\">打开商品详情</a>\n" +            "</body>\n" +            "\n" +            "</html>";让webView加载上面这个html。就可以跳转了,在此不进行截图了,下面介绍如何在B页面中获取uri中传递的参数

B页面中获取uri中传递的参数:

        Uri uri = getIntent().getData();        uri中有很多获取参数的方法        String id = uri.getQueryParameter("id")        就成功的获取了参数,当然还有一些方法进行获取

如何判断一个Scheme是否有效

PackageManager packageManager = getPackageManager();Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("wr://com.app.wr:8888/app?id=1001"));List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);boolean isValid = !activities.isEmpty();if (isValid) {    startActivity(intent);}
原创粉丝点击