美文网首页
Scheme协议

Scheme协议

作者: MDZZ灭顶之灾12138 | 来源:发表于2018-08-20 18:08 被阅读82次

Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面

  • 服务器可以定制化跳转app页面
    app可以通过Scheme跳转到另一个app页面
    可以通过h5页面跳转app原生页面
  • Uri.parse("qh://test:8080/goods?goodsId=8897&name=fuck")
    qh代表Scheme协议名称
    test代表Scheme作用的地址域
    8080代表改路径的端口号
    /goods代表的是指定页面(路径)
    goodsId和name代表传递的两个参数

  • Scheme使用

 <activity android:name=".SchemeActivity">
            <!-- 给页面添加指定的过滤器-->
            <intent-filter>
                 <!--该页面的路径配置-->
                <data
                    android:host="test"
                    android:path="/goods"
                    android:port="8080"
                    android:scheme="qh"/>
                <!--下面这几行也必须得设置-->
                <category android:name="android.intent.category.DEFAULT"/>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.BROWSABLE"/>
            </intent-filter>
        </activity>
  • 获取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<String> queryParameterNames = uri.getQueryParameterNames();
    tv_scheme.setText(sb.toString());
    }

  • 调用方式

  1. 原生调用
 Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse("qh://test:8080/goods?      goodsId=8897&name=fuck"));
  startActivity(intent1);
  1. html调用
<a href="qh://test:8080/goods?goodsId=8897&name=fuck">打开商品详情</a>
  • 判断某个Scheme是否有效
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("qh://test:8080/goods?goodsId=8897&name=fuck"));
List<ResolveInfo> activities = getPackageManager().queryIntentActivities(intent, 0);
boolean isValid = !activities.isEmpty();
if (isValid) {
    startActivity(intent);
}

相关文章

  • Android Scheme URL 使用方法

    URL Scheme 介绍 URL Scheme是一种页面内跳转协议,通过定义自己的URL Scheme协议,可以...

  • Android组件化开发之路(二)URL Scheme使用

    什么是 URL Scheme? android中的scheme是一种页面内跳转协议,通过定义自己的scheme协议...

  • scheme调起App及传参的问题汇总

    协议格式 首先咱们看看scheme的协议格式: scheme://host:8080/path?query1=1...

  • Scheme协议

    Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面 服务器可以定制化跳转a...

  • scheme协议

    先说下DeepLink(深度链接) DeepLink,又称深度链接、调起链接,是一套链接服务,用户点击链接可以跳转...

  • Aroute之进阶使用

    通过Scheme跳转 Scheme是界面跳转协议,类似URL地址,通过url可以打开某个网站,而通过Scheme可...

  • 笔记-H5页面调起app实现

    h5页面调起app实现,通过scheme协议或者link协议调起; 步骤一:app清单文件设置scheme ,如果...

  • Android 利用scheme协议进行跳转

    什么是 URL Scheme? android中的scheme是一种页面内跳转协议。 通过定义自己的scheme协...

  • Android URL Scheme唤醒之门

    1、scheme的作用 Android的scheme 是一种页面内跳转协议。通过scheme 可以进行页面跳转,可...

  • (二)HTTP URI

    Author: Xu FC URL URL 组件Scheme: scheme:协议缩写的小写,比如 http/ft...

网友评论

      本文标题:Scheme协议

      本文链接:https://www.haomeiwen.com/subject/yrbliftx.html