AppDeepLink (唤起APP)

情景:在浏览器中唤起我们自己的应用

配置:

1. 首先,在HTML的页面中添加如下格式链接:

第一种方式:<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>
举例:

<a href="http://example.com/status?name=yoosir&age=20">启动应用程序</a>

第二种方式:<a href="[scheme]://[host]/[path]/parameters">启动应用程序</a>
举例:

<a href="http://example.com/status/1234">

2.在AndroidManifest.xml中做如下配置:

        <activity android:name=".activity.SplashActivity">
             ....//其他 intent-filter
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:scheme="http"             //对应url中的scheme    可以定义成自己特定的,比如 my.special.scheme
                    android:host="example.com"   //对应url 中的 host
                    android:pathPrefix="/status"    //对应url中的path   **注意**: /  需要这里添加
                     />
            </intent-filter>
        </activity>

3.在代码中对点击事件做处理

//一般在 activity的 onCreate中做处理

/** 对应URL 的第一种配置方法 **/
String action = getIntent().getAction();
if(Intent.ACTION_VIEW.equals(action)){
    //可以通过Action 来判断是不是浏览器启动
    Uri uri = i_getvalue.getData();
}
if(uri != null){
    String scheme = data.getScheme(); // "http"
    String host = data.getHost(); // "example.com"
    String name = uri.getQueryParameter("name"); // "yoosir"
    String age= uri.getQueryParameter("age");       // "20"
}

/** 对应URL 的第二种配置方法 **/
Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "example.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1); // "1234"

4.特殊操作

//经测试,在小米手机的默认浏览器和UC上都可以正常运行
启动应用Dialog <a href="http://example.com/openwith"> click me  </a>

//经测试,在小米手机的默认浏览器可以正常运行。UC上没反应
package= 应用包名
启动应用没有Dialog:<a href="intent://example.com/openwith#Intent;scheme=http;package=com.xxx.xxx;end;"> click me  </a>

总结下:

  1. 第三方浏览器,对 "#Intent;scheme=http;package=com.xxx.xxx;end;"默认不识别,所以不推荐使用这种方式。
  2. 在QQ中通过以上方法可以唤醒应用。
  3. 在微博和微信中不可行。

最后一个技巧:

我们可以写一个 带有链接的 html 文件在手机上用浏览器打开测试。但是,QQ上怎么测试呢?
大家可以直接在简书上写一个链接

//链接就放你们自己定义的,就可以通过打开文章链接,找到并 点击 启动应用,就可以在QQ上唤醒你的应用了。
 [启动应用]("http://example.com/openwith")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,001评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • question 1 逆序遍历二分树 给定一个二分搜索树(BST),对于每一个节点,加上所有比它大的节点的和,然后...
    vincehxb阅读 146评论 0 0
  • 第二节 不速之客 “夺命四娘”普吉吉的家伙是一把大剪刀,看上去普普通通,毫不起眼,实则是用极其稀有的青龙石加上千年...
    狼神2019阅读 441评论 0 3
  • 前几天,有位同事找到我说有什么办法能批量搞定带图片的准考证,照片是以考生的名字命名的,还有考生的各种信息表,以及面...
    xiaohuizi阅读 2,840评论 0 0