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

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

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

通过Uri跳转Activity(当然对于WebView中的网页同样适用)_第1张图片

在此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值过去

所运行的截图

通过Uri跳转Activity(当然对于WebView中的网页同样适用)_第2张图片

通过Uri跳转Activity(当然对于WebView中的网页同样适用)_第3张图片

这里写图片描述

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

    private String mLoadData = "\n" +
            "\n" +
            "\n" +
            "正在加载数据...\n" +
            "\n" +
            "";
private String mData = "\n" +
"\n" +
"\n" +
"我的第一个 HTML 页面\n" +
"\n" +
"\n" +
"\n" +
"

body 元素的内容会显示在浏览器中。

\n"
+ "

title 元素的内容会显示在浏览器的标题栏中。

\n"
+ "\n" + "打开商品详情\n" + "\n" + "\n" + ""; 让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 activities = packageManager.queryIntentActivities(intent, 0);
boolean isValid = !activities.isEmpty();
if (isValid) {
    startActivity(intent);
}

你可能感兴趣的:(通过Uri跳转Activity(当然对于WebView中的网页同样适用))