Android中通过广播方式调起第三方App

Android外部调起App方案 背景 日常使用场景中经常需要从app外部唤起app,比如短信链接,浏览器页面点击按钮等。传统的方式都可以使用android系统自带的拦截url ,也就是schema方式,但这种方式在拦截生效时会弹出所有可以处理此连接的app出来供用户选择,如果用户没有选择我们的app,那么这个唤起也就不成功。现在市面上有很多成熟的方案,目前美菜商城采用的是极光魔链sdk来处理。 极光魔链sdk使用 可以参考极光魔链接入方式https://docs.jiguang.cn/jmlink/guideline/intro/. 阅读详情

今天紧急的跟进一个百度视频App无法调起百度贴吧App的问题,当然,这个是只发现是在4.x的android系统下发生,在2.x版本下,一切正常,(其实是3.1及以上的版本都有问题)具体场景为:

1、贴吧App安装成功但未启动,试图从视频App通过sendBroadcast方式调起:失败

2、贴吧App的进程被用户强制杀掉,试图从视频App通过sendBroadcast方式调起:失败

3、贴吧App处于启动状态,试图从视频App通过sendBroadcast方式调起:成功

看了一下视频调起贴吧的代码逻辑,是这样的:

1
2
3
4
5
Intent intent = new  Intent( "com.baidu.tieba.action.INVOKE" );
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra( "type" , "frs" );
intent.putExtra( "fname" , "李毅" );
activity.sendBroadcast(intent);

 

于是直接定位问题:必定是高版本的android系统,在发送广播的适合,无法调起未启动(处于停止状态)的的App,打开官方文档查了一下: http://developer.android.com/about/versions/android-3.1.html#launchcontrols 写的很明白,大概意思是:

从Android 3.1开始,给Intent定义了两个新的Flag,分别为FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES,用来控制Intent是否要对处于停止状态的App起作用,顾名思义:

FLAG_INCLUDE_STOPPED_PACKAGES:表示包含未启动的App

FLAG_EXCLUDE_STOPPED_PACKAGES:表示不包含未启动的App

值得注意的是,Android 3.1开始,系统向所有Intent的广播添加了FLAG_EXCLUDE_STOPPED_PACKAGES标志。这样做是为了防止广播无意或不必要地开启未启动App的后台服务。如果要强制调起未启动的App,后台服务或应用程序可以通过向广播Intent添加FLAG_INCLUDE_STOPPED_PACKAGES标志来唤醒,示例代码:

1
2
3
4
5
6
Intent intent = new  Intent( "com.baidu.tieba.action.INVOKE" ); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent. FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra( "type" , "frs" );
intent.putExtra( "fname" , "李毅" );
activity.sendBroadcast(intent);

如果你的项目依赖的Android SDK是3.1以下版本,那么直接像上面这样写是会出问题的,你会发现Intent.FLAG_INCLUDE_STOPPED_PACKAGES无法被正确识别,所以相对安全的办法是,直接把value写进来:

1
2
3
4
5
6
7
8
9
Intent intent = new  Intent( "com.baidu.tieba.action.INVOKE" ); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// 3.1以后的版本直接设置Intent.FLAG_INCLUDE_STOPPED_PACKAGES的value:32
if  (android.os.Build.VERSION.SDK_INT >= 12) {
     intent.setFlags(32);
}
intent.putExtra( "type" , "frs" );
intent.putExtra( "fname" , "李毅" );
activity.sendBroadcast(intent);

以上,Mark一下!


Android APP A通过Uri调起B,实现授权登录(无SDK类似微信登录) 来自朋友的投稿:https://blog.youkuaiyun.com/qXing123456789/article/details/82146807  最近朋友在做项目的时候遇到类似需求,弄了很久,想了很久,最终还是弄出来了, 以下是朋友的总结,如果网友有类似需求可以看看,下面的实现原理,并附上DEMO ,以下内容仅供参考! Android APP A通过Uri调起B,实现授权登录(无SDK类似微信登录... 阅读详情

相关推荐

Android广播机制在PDA扫码中的高效应用与实现

本文详细解析Android广播机制在PDA扫码中的高效应用,通过BroadcastReceiver和IntentFilter实现扫码数据的直接接收,避免键盘弹出问题,提升用户体验。重点介绍广播参数配置、uni-app代码实现及多设备兼容性处理,为工业级扫码应用提供完整解决方案。

github5actions的博客 976

android 使用广播后台拉起activity/dialog

第一步:创建想要弹出的样式 例如: 我们可以使用activity承载dialog的样式,然后使用广播以及pendingIntent方式后台拉起。 核心代码如下: Intent intent = new Intent(appActivity, AliveActivity.class);//跳转至承载样式的activity try { pendingIntent = PendingIntent.getActivity(appActivity, 0, intent, PendingInte...

qq_41620230的博客 1697

SICK LMS111激光雷达数据解析实战:从原始帧到三维点云的完整流程

本文详细解析了SICK LMS111激光雷达从原始数据帧到三维点云的完整处理流程,包括数据帧结构解析、坐标转换、点云可视化及性能优化技巧。通过实战代码示例,展示了如何高效处理激光雷达数据,并应用于动态物体检测、地面分割等工业场景,为AGV和服务机器人开发者提供实用指南。

garlic的博客 767

广播:通过广播启动另一个应用

通过A应用启动B应用 A应用中通过Intent发送广播 Intent intent = new Intent("B"); sendBroadcast(intent); B应用中创建广播接收者类,并在其中写接受到广播后的逻辑 public class MyReceiver extends BroadcastReceiver { @Override //接受到广播后执行的方法:接受到广播后启动应用 public void onReceive(Context con

fusu2178192的博客 2131

FPGA实现电机转速PID控制

通过纯RTL实现电机转速PID控制,包括电机编码器值读取,电机速度、正反转控制,PID算法,卡尔曼滤波,最终实现对电机速度进行控制,使其能够渐近设定的编码器目标值。

STATEABC的博客 7469

第二十届全国大学生智能汽车竞赛极速光电组:MicroPython与恩智浦RT1021的硬件编程实战指南

本文为参加第二十届全国大学生智能汽车竞赛极速光电组的同学提供了一份详尽的MicroPython与恩智浦RT1021硬件编程实战指南。文章深入剖析了选择MicroPython与RT1021这对组合的优势,详细讲解了从开发环境搭建、基础硬件控制(如GPIO、PWM、编码器、CCD)到系统集成(平衡控制、循迹算法)与多任务调试的全过程,旨在帮助参赛者降低嵌入式开发门槛,高效备赛。

wdx0123456的博客 842

android app调试,Android App调试一个奇巧淫技

前言不知道同学们有没有遇到这些时候:1.需要在某个时刻,获取某个本地数据,而重新走流程debug又比较麻烦;2.你需要临时清理一个数据,但app当前流程,并不提供这样的操作;3.想在程序加段代码,代码要依赖app当前状态,但不知道代码跑不跑得通,于是在某处加入代码,编译运行,走流程...如果代码失败,还得重复上述步骤;4.等等...简单地说,就是想在app运行的某个时刻,运行一小段代码,于是不得不...

weixin_35860804的博客 898

不止于算力:深入鲲鹏920的片上网络(NoC)与一致性协议HCCS,看华为如何优化数据流转

本文深入解析了鲲鹏920处理器的片上网络(NoC)架构和一致性协议HCCS,揭示了华为如何通过创新的环总线设计和私有协议优化数据流转效率。文章详细介绍了鲲鹏920在多die、多芯片环境下的高效协同机制,包括环总线架构、HCCS协议精妙设计及物理实现创新,为云服务场景提供了高性能解决方案。

weixin_30681121的博客 251

转 Android中通过广播方式调起第三方App

今天紧急的跟进一个百度视频App无法调起百度贴吧App的问题,当然,这个是只发现是在4.x的android系统下发生,在2.x版本下,一切正常,(其实是3.1及以上的版本都有问题)具体场景为: 1、贴吧App安装成功但未启动,试图从视频App通过sendBroadcast方式调起:失败 2、贴吧App的进程被用户强制杀掉,试图从视频App通过sendBroadcast方式调起:失败 3、贴吧...

weixin_30873847的博客 177

Python实现安居客新房数据抓取简易版

本文介绍使用Python爬取安居客新房楼盘数据的方法,重点针对三四线城市。通过分析移动端H5页面结构,采用滚动加载方式获取推荐楼盘列表(class="recomm-list"),从中提取楼盘ID并拼接详情页链接。代码展示了如何解析HTML标签获取楼盘名称、状态、价格、户型等基本信息,并处理图片URL。爬取过程涉及一个一级页面和两个二级页面,同时提到可能遇到的验证码问题将在后续处理。核心代码使用BeautifulSoup解析HTML,requests发送请求,并将数据存入MySQL数据库。

qq_37604998的博客 473

【安徽理工大学】一文带你高分拿下计算机考研复试(85+的秘密)

一文带你高分拿下安徽理工大学计算机考研复试(85+的秘密)

猫天意的博客 1522

Android中通过广播方式调起第三方App,3.0以上版本

今天紧急的跟进一个百度视频App无法调起百度贴吧App的问题,当然,这个是只发现是在4.x的android系统下发生,在2.x版本下,一切正常,(其实是3.1及以上的版本都有问题)具体场景为: 1、贴吧App安装成功但未启动,试图从视频App通过sendBroadcast方式调起:失败 2、贴吧App的进程被用户强制杀掉,试图从视频App通过sendBroadcast方式调起:失败

chudaijiang的专栏 748

goahead(嵌入式Web服务器)之openssl 应用篇

1、环境配置 在me.h文件里修改以下宏定义 ME_COM_MBEDTLS 0 ME_COM_MATRIXSSL 0 ME_COM_NANOSSL 0 ME_COM_OPENSSL 1 2、添加 goahead-openssl.c goahead-openssl.c这个文件在有些goahead源码中是没有的,后面的章节中会提供openssl应用测例 3、依赖的库 goahead的openssl 应用需要依赖libssl.a与libcrypto.a(libssl.so与libcrypto.so)两个库,做好

weixin_40732273的博客 2089

Android中点击链接调起App

最近工作中的一个需求是点击短信链接则调起App然后完成相关功能逻辑,查阅相关文章完成需求,以此文章来记录Android中点击链接吊起App的实现。

小唯的博客 2408

Open3D 体素下采样【2026最新版】

体素滤波,博客长期更新,本文最近更新时间为:2026年4月11日。

点云侠的博客 37万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android 广播 设置flag,Android 4.0新的广播机制FLAG_EXCLUDE_STOPPED_PACKAGES

问题:第三方app调起失败,当然,这个是只发现是在4.x的android系统下发生,在2.x版本下,一切正常,(其实是3.1及以上的版本都有问题)具体场景为:1、第三方App安装成功但未启动,试图从App通过sendBroadcast方式调起:失败2、第三方App的进程被用户强制杀掉,试图从App通过sendBroadcast方式调起:失败3、第三方App处于启动状态,试图从App通过sendBr...

weixin_34053992的博客 673

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android 4.0新的广播机制FLAG_EXCLUDE_STOPPED_PACKAGES

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34346099的博客 163

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android APP间授权登录(无需SDK类似微信登录)(源码+解析)

Android APP A通过Uri调起B,并实现应用间数据交互 目录 Android APP A通过Uri调起B,并实现应用间数据交互 目录 前言 一 需求 二 A应用(调用者)业务代码与布局 三 B应用(授权应用)业务代码 (博主需求点也顺路写上,读者可不读下面123点)与布局代码 四 结尾 脚注 前言 记录每天开发踩坑点,方便以后查阅,回味自己个...

KX興博客 1万+

两个独立app广播的发送与接收

Android8.1 两个独立app间静态广播的发送与接收 Android8之后取消了大部分的静态广播的注册,可以参考广播限制,使用以前发送广播的方式是不能够调起注册的静态广播的。这里直接用跨进程(两个APP)通信的方式进行展示,在同一个进程中也是一样的: 1 ) 接收广播app1的manifest配置: <manifest xmlns:android="http://schemas...

dl6655的专栏 1718

用安卓kotlin 写一个调起其他 active 的轮询广播

最近的工作需要做一个定时弹窗的任务,任务比较复杂,我将其代码简化一下。这里我采用的方式是每次接收到广播就设定下一个闹钟,从而达成轮询的效果。

leidashuaige的专栏 920

android微信支付插件,Android通过Apk插件调起微信支付(示例代码)

App对接微信调起微信支付需要在微信平台注册,鉴别的标识就是App的包名,所以将申请的包名单独打包成一个Apk文件,则在其他的App调起此Apk的时候同样可以起到调用微信支付的功能。这样就实现了调起微信支付的SDk的功效。操作实现中要将Apk文件安放在assets文件夹的目录下。当安装好App之后,要将Apk文件保存到本地中代码实现如下:private boolean saveApk() thro...

weixin_42356139的博客 510

android微信支付插件,Android通过Apk插件调起微信支付

App对接微信调起微信支付需要在微信平台注册,鉴别的标识就是App的包名,所以将申请的包名单独打包成一个Apk文件,则在其他的App调起此Apk的时候同样可以起到调用微信支付的功能。这样就实现了调起微信支付的SDk的功效。操作实现中要将Apk文件安放在assets文件夹的目录下。当安装好App之后,要将Apk文件保存到本地中代码实现如下:private boolean saveApk() thro...

weixin_33501543的博客 519
上一篇: 手写CrashHandler实现UncaughtExceptionHandler拦截android异常
下一篇: Android酷炫实用的开源框架(UI框架)
fancylovejava
博客等级 码龄16年 1052粉丝 184原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值