从浏览器中打开我们的应用

[ MacOS 使用技巧 ] Google Chrome 自动打开本地安装应用的设置和还原 本文介绍了 MacOS 上的 Google Chrome 自动打开本地安装应用的设置方法与还原方法,包含一些相关知识的介绍。 阅读详情

0x00

有时候你会发现,用Android系统自带的浏览器(chrome)打开一个web页面,如果安装了相应的App,就会自动打开这个App并进入具体的界面中,比如手机上打开:

https://www.zhihu.com/openinapp_instruction?app-id=432274380&app-argument=zhihu://questions/24122524

如果我们安装了知乎手机客户端,这个时候会自动打开知乎手机客户端,并且进入问题展示界面。还比如网易云音乐,今日头条等等App都是支持这个功能的。之前我们自家App的分享都是打开一个App介绍的界面,即使安装了手机客户端,也不会自动打开手机客户端。为了追求更好的体验,我们需要实现这个功能。

0x01 Chrome浏览器

研究这个功能,还是查阅了不少资料,比如 app link、deep link、chrome browser等等,如果紧紧是实现上面介绍的功能,还是 so easy的,仅仅需要了解 Chrome 浏览器 创建 Intent 的方法即可。

Chrome构造一个 Intent 的基本语法如下:

intent:
   HOST/URI-path // Optional host 
   #Intent; 
      package=[string]; 
      action=[string]; 
      category=[string]; 
      component=[string]; 
      scheme=[string]; 
   end; 

根据上面的语法,我们来看一个demo:

intent:
   //article/51348656
   #Intent; 
      package=com.ttdevs.android; 
      scheme=ttdevs; 
   end; 

可以使用下面的 html 代码触发这个事件:

<a href="intent://article/51348656/#Intent;scheme=ttdevs;package=com.ttdevs.android;end">ttdevs</a>

另外还有个参数:

S.browser_fallback_url=[encoded_full_url]

介绍如下(不过我没搞明白):

When an intent could not be resolved, or an external application could not be launched, then the user will be redirected to the fallback URL if it was given.
Some example cases where Chrome does not launch an external application are as follows:
- The intent could not be resolved, i.e., no app can handle the intent.
- JavaScript timer tried to open an application without user gesture.
Note that S. is a way to define string extras. S.browser_fallback_url was chosen for backward compatibility, but the target app won’t see browser_fallback_url value as Chrome removes it.

0x02 App内处理浏览器发来的Intent

通过上面的介绍,如果我们点击链接,就会触发一个 Intent,有了Intent,我们还需要来处理它。在 AndroidManifest.xml 中相应的 Activity 中的配置中添加如下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:host="article" android:pathPattern="/.*" android:scheme="ttdevs"/>
</intent-filter>

同时在Activity中处理Intent:

public class RouterActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_router);

        handleIntent(getIntent());
    }

    private void handleIntent(Intent intent) {
        String action = intent.getAction();
        String data = intent.getDataString();
        LogUtils.debug(action);
        LogUtils.debug(data);
    }
}

运行上面的代码,同时用系统浏览器打开上面的html,点击链接,即可调起我们的app。或者也可以通过下面的adb命令触发:

adb shell am start \
-a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d "ttdevs://article/12345" com.ttdevs.android

在我的设备(魅族MX4 Pro)上,如果没有安装处理这个 Intent 的App,则会打开系统自带的应用市场。

对于一个提供查询食物数据的App,如果我们分享出去的食物信息带上了相关的参数,在用户点击分享链接时,如果安装了我们的App则可以跳到App中展示食物的界面,如果没有安装,则会跳到应用市场下载,很好的逻辑~~


参考:
https://developer.chrome.com/multidevice/android/intents

钉钉微应用 - - - - - 如何打开外部浏览器 如何打开外部浏览器 阅读详情

相关推荐

CAN总线错误帧全解析:从数据包到硬件层的故障树分析

本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。

weixin_26742753的博客 492

通过浏览器直接打开Android应用程序

介绍如何通过点击手机浏览器中的链接,直接打开本地Android App。 实现方式不太完美,最近看了微博、京东的手机版网页,感觉他们的实现方式很不错,研究了一下,实现以下效果: 如果本地已经安装了指定Android应用,就直接打开它;如果没有安装,则直接下载该应用的安装文件(也可以跳转到下载页面)。 实现效果 如下图所示,在手机浏览器中访问京东的手机版网站(m.jd.c

long_ge_cool的专栏 2906

ATAC-seq数据分析流程学习记录及总结

记录ATAC-seq数据分析流程,主要是参考健明老师的教程以及网上各种学习资源进行总结,网址在下面。

ACGTexplorer的博客 3755

网页如何打开APP应用

在网页中打开手机上已安装的原生移动应用(如 Android 或 iOS 应用),可以使用以下两种方法:1、使用应用链接(Deep Linking):使用应用链接是一种通过 URL 方式在网页中打开手机上已安装的应用程序。你可以在网页中添加一个链接,当用户点击该链接时,会触发打开相应的应用程序。具体步骤如下:a. 首先,确定目标应用程序支持应用链接,并注册了自定义的 URL Scheme 或 Uni...

文摘资讯 6607

LightTools中VBA宏的编写入门

LightTools和VBA联动

bestgamer的博客 2348

f2fs学习笔记 - 3. F2FS文件系统布局

目录1.前言2.F2FS布局说明2.1. super block(block 0x0 ~ block 0x1ff)2.2 CP(block 0x200 ~ block 0x5ff)cp page1nat journalsit journaldata summarycurrent hot node summarycurrent warm node summarycurrent cold node summarycp page22nd checkpoint2.3 SIT(block 0x600 ~ block

HZero 4647

浏览器启用本地exe应用程序

使用HTM文件:将exe应用程序的路径添加到HTML文件中,然后在浏览器中打开该HTML文件!

Front小思的博客 7882

NVIDIA DRIVE SDK深度解析(一)——核心组件与安全架构设计

本文深度解析NVIDIA DRIVE SDK的核心组件与安全架构设计,涵盖DriveOS、加速库和应用框架三层架构,以及虚拟化与安全隔离机制。重点探讨了安全岛设计、媒体处理流水线和功能安全监控体系,为开发者提供自动驾驶系统开发的实战建议和性能优化技巧。

weixin_28704565的博客 567

WEB项目通过浏览器打开windows上的exe应用

通过本次需求,学到了浏览器打开exe应用的技术,收益颇多。大家有类似需求的快试试吧。

G_whang的博客 6666

从零开始理解固定翼能量控制:Pixhawk TECS算法保姆级教程

本文深入解析了Pixhawk飞控中的TECS(总能量控制)算法,旨在解决固定翼无人机纵向控制中速度与高度耦合的经典难题。教程从物理概念出发,阐释了TECS通过管理总能量与分配能量形态来实现油门与升降舵解耦的核心思想,并提供了参数调试的实战指南,帮助开发者优化飞行性能。

white的博客 251

【PX4学习笔记】3. PX4 固件烧写(1 探索过程)

飞控型号:cube orange【PX4官方用户指南中关于cube orange的描述】 飞控载板型号:Mini Carrier Board【迷你载板说明文档】 固件安装参考:The Cube User Manual V1.0

【人工智障 | 计算鸡视觉 | 机器孩】 7677

浏览器打开本地应用和程序制作安装包

最近使用python开发一款windows应用,有一个需求是从浏览器打开本地应用。name=xxx&password=xxx’的PLCTester是注册表中注册的名,?后续流程参考 https://blog.youkuaiyun.com/hanxiaoyong_/article/details/124149436。说明:我需要通过web浏览器打开本地的PLCTester.exe应用,就添加上述代码。ctrl+F11召唤配置界面,配置编译器和帮助是NSIS安装目录下的对应文件。NSIS可以制作安装包,优点:免费,开源;

qq_42730522的博客 1088

基于工作流的低代码AI应用开发:Flock平台核心架构与实战指南

在AI应用开发领域,工作流编排正成为连接大语言模型(LLM)能力与复杂业务逻辑的关键技术。其核心原理是将任务分解为模块化节点,通过可视化方式定义执行顺序与数据流向,从而实现灵活可控的自动化流程。这种范式极大地提升了开发效率,降低了技术门槛,使得开发者能够聚焦于业务设计而非底层代码。在技术价值层面,工作流编排支持检索增强生成(RAG)、多智能体协作等高级模式,并能通过人工干预节点确保关键流程的可靠性与合规性。其典型应用场景包括智能客服、自动化办公、数据分析助手等。本文以Flock平台为例,深入解析了如何利用其

weixin_26848497的博客 384

如何实现飞书自建应用PC端指定浏览器打开

如何实现飞书自建应用PC端指定浏览器打开

北京_小杰子的博客 7062

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

js通过浏览器打开本地应用程序(exe文件)

最近项目有一个需求,需要通过浏览器打开项目内部开发的应用程序(exe文件) Step1:在Windows电脑上新建txt文件 进行如下配置: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\universalLink] @="universalLink Protocol" "URL Protocol"= "" [HKEY_CLASSES_ROOT\universalLink\DefaultIcon] @="F:\\VS\\Vs Code

NJR10byh的博客 5914

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android 启动浏览器下载应用程序,Android从浏览器中打开本地应用

开发中遇到的一些问题特此记录:1、应用场景一 在浏览器中要求直接打开到安装的应用中需要在该应用的启动Activity 清单文件中进行配置android:host="com.baidu.test"android:scheme="text"/>此处对应的data数据 跟服务器人员进行交互的时候为:text://com.baidu.test2、应用场景二 在浏览器中进行打开 并且要求打开指定的具...

weixin_33902301的博客 1121

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

允许网页打开android应用程序,通过浏览器直接打开Android应用程序

需求通过手机浏览器直接打开Android应用程序。假设本地已经安装了指定Android应用,就直接打开它;假设没有安装,则直接下载该应用的安装文件(也能够跳转到下载页面)。实现效果假设手机上已经安装了App。则直接打开。假设没有安装,则開始下载。实现方式1.为Android应用的启动Activity设置一个Schema,例如以下:2.用户点击浏览器中的链接时,在动态创建一个不可见的iframe,而...

weixin_42511177的博客 1469

20130725(Android)通过浏览器打开应用

今天做了一个小demo关于如何通过浏览器打开一个应用,那么就要对应用设置一个URI,这个URI在哪配置呢? URI规范:scheme://host/..... 那么在浏览器中输入demo://test.com就可以打开应用了。 应用传递数据的URI应该这样写:demo://test.com?a=5&b=6 打印结果: 上面使用chrome浏览器测试 注意:使用c

548

android点击链接不打开浏览器,在链接点击而不是浏览器上打开我的应用程序 - Android...

如果应用程序安装在设备上,我想在链接点击而不是浏览器上打开我的应用程序,否则打开Goog​​le play。 所以搜索后..这是我的清单在链接点击而不是浏览器上打开我的应用程序 - Androidandroid:name="example.com.MyActivity"android:label="@string/title_activity_open_event_details" >and...

weixin_28939637的博客 438

通过浏览器打开某个应用程序

现在做了一个小程序,想要用户可以通过浏览器打开,最早见过通过ActiveX插件实现的,但是这个东西早已淘汰,而且安全性问题,即便IE浏览器支持,但是也不好使。 然后,发现人家QQ、腾讯会议这些的都可以直接浏览器打开,而且不限浏览器。 百度了下,确实可以。 于是赶紧搞起来,做个Test。

龙井茶的Sky 3780

windows 用浏览器打开应用程序的方法

以阿里的 OSS 程序为例 找到应用程序所在的文件位置: C:\Program Files (x86)\OSS\oss.exe 新建 regeit.reg 文件内容如下:(路径需要双斜线) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\oss] @="" "URL Protocol"="C:\\Program Files (...

du_peiduo的专栏 7505

手机浏览器自动打开快应用?

按照如下方法设置禁止浏览器打开快应用 以oppo手机为例子,其余手机类似 找到手机的设置 然后往下滑动至底部并找到快应用图标 点击进入后会发现设置默认是打开的 然后我们选择点击关闭 之后浏览器就不会再打开快应用啦,又可以愉快的查资料了...

qq_41213693的博客 4万+

如何优雅地从浏览器打开本地应用deeplink

相信Android开发者都会知道,在应用内跳转页面,我们肯定会用到 Intent。使用 Intent 跳转页面有显式跳转和隐式跳转两种方式。 Intent intent = new Intent(); intent.setClass(this, MainActivity.class); st...

chuanao8829的博客 514

使用Java代码打开浏览器,打开本地应用程序 java RunTime 使用 RunTime打开浏览器

使用Java代码打开浏览器,打开本地应用程序 java RunTime 使用RunTime打开浏览器 一、打开浏览器 /** * description: 使用Java代码打开浏览器 browser --- RunTime 类打开 * @throws Exception * @return void * @version v1.0 * @author...

HaHa_Sir的博客 2352

企业微信应用 应用号内消息链接无法在企微内置浏览器打开 windows PC客户端 问题解决

需求是每周在企微的应用号上发送周报,周报中会带着进入系统的链接,点击进入可以查看详情。系统需要登录鉴权,因此需要在内置浏览器打开便于自动认证。但是,在企微应用号发送的链接,手机上可以正常使用企微内置浏览器打开,PC端却会在系统默认浏览器打开,而不是企微内置浏览器打开,导致oauth认证失败。注意:企微群聊机器人发送的链接可以正常打开,无此类问题,该问题仅出现在企微应用号上。

weixin_44670774的博客 4988
上一篇: 用support annotation替代enum
下一篇: Python中的Thread Local
ttdevs
博客等级 码龄15年 388粉丝 91原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值