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

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

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

这里写图片描述

在此data便签,便是url的配置了。一定要注意path这个参数,一定要先/在跟路径。
wr://com.app.wr:8888/app?id=1001此url是一个完整的url
wr:代表的是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);
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值