本文将带你了解Android应用开发之android Activity Scheme跳转协议运用讲解,希望本文对大家学Android有所帮助。
Scheme协议
Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面。
服务器可以定制化跳转app页面app可以通过Scheme跳转到另一个app页面可以通过h5页面跳转app原生页面
协议格式
?1Uri.parse("qh://test:8080/goodsgoodsId=8897&name=fuck")
qh代表Scheme协议名称test代表Scheme作用的地址域8080代表改路径的端口号/goods代表的是指定页面(路径)goodsId和name代表传递的两个参数
Scheme使用
定义一个Scheme
获取Scheme跳转的参数
Uri uri = getIntent().getData(); if (uri != null) { // 完整的url信息 String s = uri.toString(); sb.append(s + "\n"); // scheme部分 String scheme = uri.getScheme(); sb.append("scheme=" + scheme + "\n"); // host部分 String host = uri.getHost(); sb.append("host=" + host + "\n"); // 访问路劲 String path = uri.getPath(); sb.append("path=" + path + "\n"); //port部分 int port = uri.getPort(); sb.append("port=" + port + "\n"); // Query部分 String query = uri.getQuery(); sb.append("query=" + query + "\n"); //获取指定参数值 String goodsId = uri.getQueryParameter("goodsId"); sb.append("goodsId=" + goodsId + "\n"); //列举所以参数名 Set queryParameterNames = uri.getQueryParameterNames(); tv_scheme.setText(sb.toString()); }
调用方式
?1231. 原生调用Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse("qh://test:8080/goodsgoodsId=8897&name=fuck")); startActivity(intent1);
?122. html调用打开商品详情
判断某个Scheme是否有效
?123456Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("qh://test:8080/goodsgoodsId=8897&name=fuck"));List activities = getPackageManager().queryIntentActivities(intent, 0);boolean isValid = !activities.isEmpty();if (isValid) { startActivity(intent);}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!