1、深链接Deep link(URI SCHEME协议)

深链接即我们通常说的scheme跳转,需要我们在清单文件中对activity添加intent-fillter,并定义scheme(包括但不限于HTTP协议)。如果用户手机内安装了多款能响应链接启动的应用,那么系统会弹出一个选择器,让用户自主选择用哪个应用打开。

2、安卓软件链接组 Android App Links

Android App Links是6.0以后才支持的链接方式,APP通过定义一组你自有的HTTP URL将该其设置为系统的默认打开对应域名的地址的应用(注意区分:不是6.0以下的默认打开某类数据)。当用户点击了包含你的域名的链接时,系统默认用你的APP打开该链接,如果用户手机未安装你的APP,那么会直接用浏览器打开。手机里的其他应用则不能打开。

3、两种区别

其实是一种技术的两种使用方式而已

区别项 Deep link App Links
Intent URL scheme http,https,自定义协议 http,https
Intent action 任何action 需要android.intent.action.VIEW
Intent category 任何category 需要android.intent.category.BROWSABLE和android.intent.category.DEFAULT
链接验证 不验证 通过DAL文件和https验证
用户体验 可能会弹出一个APP选择弹框让用户选择用哪个应用打开 不弹APP选择弹框,直接用你的APP打开(已安装,否则直接打开网页)
兼容性 所有版本系统 6.0及以上

代码上的区别

因此,Android App Links相对于Deep link有以下几点优势:
1、安全:因为只有你自己的APP能打开,所以很可靠;
2、无缝的用户体验:因为只有自己的APP可以打开,所以不会出现让用户选择哪个应用的打开的弹框,如果用户没有安装你的APP,则直接用浏览器打开。
3、支持免安装的谷歌应用:当然,这条优势对国内开发者来说没什么影响,因为谷歌的免安装应用需要上传到google player。
4、支持从浏览器、谷歌搜索APP、手机快捷搜索和谷歌助手等多个地方通过链接启动APP。
但是,因为国内room厂商众多,如果在浏览器中打开链接,因为各方浏览器不一致,类似这种功能被限制了,往往会跳转新的网页,致使不能唤起APP。

Deep link支持:
当用户点击一个链接时,系统默认按以下顺序打开:
1、如果你设置了默认打开应用,则优先使用该应用打开;
2、如果只有一个应用能打开,则直接用该应用打开;
3、如果有多个应用能打开,才会弹出应用选择弹框。

4、代码实现

1.在清单文件中配置协议

AndroidManifest.xml

        <activityandroid:name=".MainActivity"android:exported="true"android:label="活动中心"android:theme="@style/Theme.AppLinksDemo"><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" /><dataandroid:host="app.niceloo.com"android:pathPrefix="/app/activityCenter"android:scheme="youlu" /></intent-filter></activity>

2.在Activity中实现代码

MainActivity.kt
因为页面可能第一次开启,也可能是在后台存活,故也需要在onNewIntent方法中进行判断是否有数据

class MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {WindowCompat.setDecorFitsSystemWindows(window, false)super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)parseIntent(intent)}override fun onNewIntent(intent: Intent?) {super.onNewIntent(intent)parseIntent(intent)}private fun parseIntent(intent: Intent?) {if(intent==null){return}val appLinkAction = intent.actionval appLinkData = intent.data//如果没有deep link信息,这里为空appLinkData?.let {val authority = appLinkData.authorityval path = appLinkData.pathval query = appLinkData.querybinding.textviewFirst.text = "linkData:${appLinkData.toString()}"}}}

3.第一种通过app入口应用 均可以唤起APP

binding.textviewFirst.setOnClickListener {val intent=Intent(Intent.ACTION_VIEW)intent.data= Uri.parse("youlu://app.niceloo.com/app/activityCenter?activityId=123456")startActivity(intent);
}

4.第二种通过浏览器中的链接均可以唤起APP

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>App link</title>
</head>
<body><a href="youlu://app.niceloo.com/app/activityCenter?activityId=123456" style><font size="20">跳转打开活动中心123456</font></a>
</body>
</html>

5.当页面被打开时,判断意图是否有数据进入

6.根据链接协议的的参数内容进行业务逻辑的跳转

scheme是协议信息,当前demo中为youlu
authority是域名信息
path是路径信息,可选值
query是连接中的参数信息

Android App links 链接打开app功能相关推荐

  1. iOS和Android手机浏览器链接打开app store或应用市场下载软件

    iOS和Android手机浏览器链接打开app store或应用市场下载软件 1.Android主流手机跳转链接 // androidId 如:com.xxx.app// oppo oppomarke ...

  2. iOS和Android手机浏览器链接打开app store或应用市场下载软件讲解

    引言 当开发一个app出来后,通过分享引流用户去打开/下载该app软件,不同手机下载的地方不一样,比如:ios需要到苹果商店去下载,Android手机需要到各个不同的应用商店去下载(华为手机需要到华为 ...

  3. ionic4 中使用 url scheme 插件 点击链接打开app

    ionic4 中使用 url scheme 插件 点击链接打开app 接到个新的需求,需要通过url打开应用,Google了下找到了 ionic 可以使用的 url scheme 插件 一.在使用前先 ...

  4. 使用MobLink点击链接打开app

    现在的市场中使用链接打开app或者下载app的例子很多,比如某个商品的详情页下面有个横幅链接,点击后即跳转到app或者相应的下载地址. 使用MobLink很方便,但是一不注意就掉坑里了. 集成很简单, ...

  5. H5 引用vue 打开app(如何该手机内有某个app则直接打开app,如果没有则跳转app下载页面)

    H5 引用vue 打开app(如何该手机内有某个app则直接打开app,如果没有则跳转app下载页面) **ps: 一定一定一定一定先向 ios要 ( ios下载地址 和 ios对应的app协议 ), ...

  6. android scheme打开app,android 通过Scheme链接启动app

    一.参考文章: http://www..com/shadajin/p/5724117.html http://jingyan.baidu.com/article/c45ad29cd6b15505175 ...

  7. 小程序和android联调,小程序打开APP指定页面

    小程序打开APP指定页面 一.小程序端准备 1.最好将小程序基础调试库调整至较为新的版本.(我选择的是大于2.5.1的版本) 2.从官网把代码 copy 过来,记得看看 button 的小程序打开ap ...

  8. 微信里扫描二维码弹出默认浏览器(苹果打开App Store)打开app的下载链接怎么实现

    使用微信推广的用户经常都会遇到推广链接被拦截导致无法下载app的情况,此时用户在微信中打开会提示" 已停止访问该网页 ".这对于使用微信营销的商家来说就很不友好且损失非常大,因为用 ...

  9. android应用宝地址链接,android 通过Scheme链接启动app

    一.参考文章: http://www.cnblogs.com/shadajin/p/5724117.html http://jingyan.baidu.com/article/c45ad29cd6b1 ...

最新文章

  1. 专家观点 | 李德仁:基于云计算的智慧城市运营脑
  2. boost::timer
  3. 计算机里FC方式,【计算机基础】在0和1的世界里来来回回
  4. 【基于Python+Flask项目部署系列--03】开发测试环境配置-基于Ubuntu16.04
  5. ❤️六W字《计算机基础知识》(二)(建议收藏)❤️
  6. 蒙特卡罗模拟法 —— python
  7. rtklib 后处理_RTKLIB 手册解读及代码调试知识总结
  8. 面包板如何接线电源 图解_互感器、电能表接线和原理讲解
  9. Python计算斐波那契数列
  10. Linux下hba卡驱动的卸载,SLES11下如何重装qlogic FC HBA卡驱动
  11. 三维点云学习(3)8- 实现Spectral谱聚类
  12. 入侵检测技术-矛与盾
  13. C语言:从键盘输入三个数,求最值问题
  14. WinForm公共控件
  15. 华为给出的测试账号里面的题
  16. 服务器性能检测器,Linux服务器性能检测工具之 collectl
  17. 前端js面试题(高级)
  18. 如何在Mac os X上搭建本地服务器环境
  19. html代码简单的保护环境网页代码 学生环保主题网页制作代码 简单的垃圾分类网页制作作业 简单的环境保护网页制作源码
  20. PayPal 如何付款

热门文章

  1. 你有多久没有收到圣诞节的祝福了,你收到那个女孩(男孩)的祝福了吗?
  2. 相机ISO是什么 ISO是什么意思?
  3. 基于cocos2d-x引擎的游戏框架设计【转载】
  4. ticker定时器用法
  5. 孩子为什么不能玩抖音精彩回答,共勉
  6. 网页版手游怎么选服务器,吃鸡怎么看自己选的哪个服务器 | 手游网游页游攻略大全...
  7. win11使用移动硬盘(固态非固态)卡顿问题解决
  8. 图片1920x1080分辨率怎么调 ?图片如何修改分辨率?
  9. 上了年纪的酒店,如何“鸟枪换炮”?
  10. 如何挑选靠谱的小程序商城免费模板?