iis服务器助手广告
返回顶部
首页 > 资讯 > 移动开发 >Android中的深度链接技术实战
  • 471
分享到

Android中的深度链接技术实战

2024-04-02 19:04:59 471人浏览 八月长安
摘要

目录前言Deep Links示例注意事项App LinksIntent Filter配置 assetlinks.JSON参考文档前言 日常中,我们经常需要从浏览器中的网页或者从其它A

前言

日常中,我们经常需要从浏览器中的网页或者从其它APP中直接打开我们的APP,我们就需要使用到深度链接技术。实现方式分别是 Dee pLinks 和 APP Links。

Deep Links

deep links是谷歌支持的一种打开app指定页面的方式,常用于从H5页面跳转至app目标页面。其对应指定页面的匹配规则是按照URI来匹配的。常见URI格式如下图:

示例

<html>
<a href="Http://demo.deaven.com:2003/test/data?params1=value1&params2=value2" rel="external nofollow" >点击唤起app</a>
<a href="https://demo.deaven.com:2003/test/data?params1=value1&params2=value2" rel="external nofollow" >点击唤起app</a>
<a href="abc://demo.deaven.com:2003/test/data?params1=value1&params2=value2" rel="external nofollow" >点击唤起app</a>
</html>

如上

  • scheme = http、https、abc。 DeepLink中 scheme 可自定义
  • host = demo.deaven.com
  • port = 2003
  • path = test/data
  • 传递参数(key-value): params1 : value1 params2 : value2
 <activity android:name=".MainActivity"
           android:exported="true"
           android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <cateGory android:name="android.intent.category.LAUNCHER" />
            </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" /> 
                <data android:scheme="https" />
                <data android:scheme="abc" />
                <data android:host="demo.deaven.com"/>
                <data android:port="2003"/>
                <!--表示匹配 Path 以/test 开头的uri,此项可以不写-->
                <!-- 注意 "/" 在pathPrefix中是必须的-->
                <data android:pathPrefix="/test"/>

            </intent-filter>
        </activity>

3.Activity中解析Intents

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Uri uri = getIntent().getData();
    String scheme = uri.getScheme(); // http、https、abc
    String host = uri.getHost(); // demo.deaven.com
    String path = uri.getPath(); // test/data
    String query = uri.getQuery(); // params1=value1&params2=value2
    String value1 = uri.getQueryParameter("params1"); 
    String value2 = uri.getQueryParameter("params2");
}

为了更好的管理以及用户体验,app中可以声明一个中间页根据参数统一分发跳转请求。

注意事项

  • scheme为 htttp/https 开头的uri,部分浏览器和手机ROM 并不能链接至APP,而是在浏览器中打开了对应的链接。所以做Deep Links时建议全部采用自定义Scheme的形式。

  • 在询问是否用APP打开对应的链接时,如果选择了“取消”并且“记住选择”被勾上,那么下次你再次想链接至APP时就不会有任何反应!!!

  • 不同的host不要写在同一个Intent Filter中,最好为每种匹配规则新建一个Intent Filter

App Links

Android在Android 6.0 (api level 23) 及以后加入了App Links , 当用户点击对应的URI 时,会直接启动对应的APP,不会再出现类似Deep Links 中是否打开app 的对话框出现。

Intent Filter

 <activity android:name=".MainActivity"
           android:exported="true"
           android:launchMode="singleTask"
           android:autoVerify="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </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" /> 
                <data android:scheme="https" />
                <data android:host="demo.deaven.com"/>
                <data android:port="2003"/>
                <!--表示匹配 Path 以/test 开头的uri,此项可以不写-->
                <!-- 注意 "/" 在pathPrefix中是必须的-->
                <data android:pathPrefix="/test"/>

            </intent-filter>
        </activity>
  • Intent Filter和Deep Links 类似 但是 scheme只能使用 htttp 或 https 不支持自定义scheme。

  • android:autoVerify="true" 会让APP自动在所列的host中去验证,如果验证成功,APP将成为匹配URI默认打开方式。

配置 assetlinks.json

  • 你可以访问https://developers.google.com/digital-asset-links/tools/generator生成assetlinks.json,如下图:

如不能翻墙,可复制下方代码修改为自己参数,生成 assetlinks.json文件 ,json文件名只能是 assetlinks 不能自定义

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target" : { "namespace": "android_app", "package_name": "com.deaven.link",
               "sha256_cert_fingerprints": [""14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5""] }
}]

2.部署assetlinks.json

我们的host为demo.deaven.com,那么我们就需将assetlinks.json放到https://demo.deaven.com/.well-known/assetlinks.json并可以正常访问。你也可以在 https://developers.google.com/digital-asset-links/tools/generator检查服务器上assetlinks.json是否可访问如下图:

3.Activity中解析Intents 类似 Deep Links

参考文档

https://www.jianshu.com/p/1632be1c2451

到此这篇关于Android中的深度链接技术实战的文章就介绍到这了,更多相关Android 深度链接内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Android中的深度链接技术实战

本文链接: https://www.lsjlt.com/news/143551.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android中的深度链接技术实战
    目录前言Deep Links示例注意事项App LinksIntent Filter配置 assetlinks.json参考文档前言 日常中,我们经常需要从浏览器中的网页或者从其它A...
    99+
    2024-04-02
  • Android Hook技术实战详解
    前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。 👉点击跳转到教程 前言: 什么是Android Hook...
    99+
    2023-09-03
    android Hook 反射 动态代理 view
  • HTLM技术中的超链接结构是什么
    今天小编给大家分享一下HTLM技术中的超链接结构是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2024-04-02
  • Python区块链入门项目:探索区块链技术实战应用
    区块链技术因其去中心化、透明不可篡改、安全可靠等特性,在金融、供应链、物联网等领域得到广泛应用。对于初学者而言,想要入门区块链技术,往往会遇到一些困难,比如缺乏编程基础、缺少实际项目经验等。本文将介绍如何使用Python语言实现一个简单...
    99+
    2024-02-23
    Python 区块链 区块链入门 区块链项目 实战教程
  • 论技术的深度与广度,该如何取舍?
    实际上,这是一个老生常谈的话题。类似的问题还有:技术的深度与广度,哪个更重要?标题之所以问如何取舍,而不问哪个更重要,是因为作为衡量技术的二个不同维度,如果脱离使用技术的人的实际情况以及特定的时代背景,是很难说清楚哪个更重要的。就像在没有任...
    99+
    2023-06-02
  • PHP中的区块链技术
    随着区块链技术的快速发展,越来越多的应用场景得到了探索和应用。作为一门广泛使用的动态网页语言,PHP也开始出现在区块链技术的应用中。本文将介绍PHP在区块链中的作用及应用场景。一、PHP在区块链中的作用PHP在区块链中扮演了多种角色,其中最...
    99+
    2023-05-23
    技术 区块链 PHP
  • Golang技术在区块链跨链技术中的作用与探索
    golang 在区块链跨链技术中扮演着重要角色,主要用于以下方面:跨链协议开发跨链网关创建跨链应用部署 Golang 在区块链跨链技术中的作用与探索 引言 跨链技术是区块链行业的关键发...
    99+
    2024-05-10
    区块链 golang git
  • Python深度学习实战PyQt5信号与槽的连接
    目录1. 信号与槽(Signals and slots)1.1 信号与槽的原理1.2 信号发送者与槽的接收者2. QtDesigner 建立信号与槽的连接2.1 信号与槽的连接:不同...
    99+
    2024-04-02
  • Android 中SQLite技术实例详解
    Android和iOS的数据库都是用SQLite来实现.一,SQLite数据库简介:轻量级:SQLite数据库是一个轻量级的数据库,适用于少量数据的CURD;文件本质:SQLite数据库支持大部分SQL语法,允许使用SQL语句操作数据库,其...
    99+
    2023-05-31
    android sqlite lite
  • 深入剖析Oracle数据库的技术实力,能否战胜MySQL?
    深入剖析Oracle数据库的技术实力,能否战胜MySQL?在当今的信息时代,数据库技术扮演着至关重要的角色,为企业和组织提供了数据存储、管理和分析的基础。Oracle数据库和MySQL数据库作为两个重要的开源和商业数据库产品,一直是广大数据...
    99+
    2023-10-22
    Oracle数据库 技术实力 MySQL对比
  • 如何进行Rails和Django的深度技术对比
    这篇文章将为大家详细讲解有关如何进行Rails和Django的深度技术对比 ,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我想以一个免责声明来开始下面的内容。我使用Django开发网站已经有...
    99+
    2023-06-17
  • PHP跨平台开发实践中的技术挑战
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-21
  • Apache的防盗链的技术怎么实现
    这篇文章主要介绍“Apache的防盗链的技术怎么实现”,在日常操作中,相信很多人在Apache的防盗链的技术怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Apache的防盗链的技术怎么实现”的疑惑有所...
    99+
    2023-06-05
  • Android中的HOOK技术是什么
    目录1. 什么是 Hook2. Hook的应用场景3. Hook的技术方式或框架4. Hook的一般步骤和技巧实战1. 什么是 Hook Hook 英文翻译过来就是「钩子」的意思,那...
    99+
    2023-02-17
    Android HOOK技术 Android HOOK框架
  • Golang 技术在云计算领域中的开发实战
    在云计算领域中,golang凭借其出色的并发性、性能和简洁语法成为开发的首选语言。golang可用于:管理kubernetes集群,轻松与api交互,执行集群管理任务。开发cloud f...
    99+
    2024-05-10
    云计算 golang
  • 深入了解ASP接口开发技术,提升关键字搜索的精准度!
    ASP是一种非常流行的服务器端脚本语言,它被广泛应用于Web应用程序的开发。ASP的一个重要特点就是可以使用接口来实现对外部系统的访问,这使得开发者可以在Web应用程序中实现各种复杂的功能。本文将深入探讨ASP接口开发技术,并介绍如何使用该...
    99+
    2023-09-30
    接口 关键字 开发技术
  • 怎么深度剖析C++对象池自动回收技术实现
    本篇文章为大家展示了怎么深度剖析C++对象池自动回收技术实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。对象池可以显著提高性能,如果一个对象的创建非常耗时或非常昂贵,频繁去创建的话会非常低效。对象...
    99+
    2023-06-17
  • Android中基于HTTP的网络技术
    Android中的网络技术是基于HTTP的访问方法,类似QQ,微信,微博等等这些软件,都使用了大量的通信方法,这已经是Android应用必不可少的内容WebView这个控件可以在Android应用中替代浏览器来显示网页,具体使用方法如下获取...
    99+
    2023-06-04
  • 实用的Android开发技术有哪些
    本篇内容主要讲解“实用的Android开发技术有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“实用的Android开发技术有哪些”吧!1. KotlinKotlin 通常被视为下一个 Jav...
    99+
    2023-06-04
  • 如何进行Android Hook技术的实践
    这篇文章将为大家详细讲解有关如何进行Android Hook技术的实践,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。概述在学习Android插件化的过程中有用到Hook相关技术,下文对Hoo...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作