调用其他应用的activity结束后回到调用app

记录实际的两种,都有需要注意的小特点

第一种:调用app通过startactivityforResult来调起其他应用的activity。

实现依据是通过目标activity的setresult+finish配合来回退到调用app。

特点:如果目标activity又调起了目标应用中的其他activity,有甚至者目标activity一连串调用了线性的一串儿activity,多个activity可能是一个功能流程中包含的多个页面,如果在其中任意一个activity结束流程并想回到调起app,需要从目标activity一层层的Intent.setFlags(FLAG_ACTIVITY_FORWARD_RESULT)来实现,否则只要目标activity调用了finish,那调用app就会收到onactivityresult结果,页面留在目标应用的其他activity。FLAG_ACTIVITY_FORWARD_RESULT可以让目标activity调起的其他activity也可以通过setresult+finish来传递给调用app数据并回到调起app.

第二种:通过绑定其他app的service,用aidl接口来调用其他应用的功能流程页面;

实现依据是通过service来间接跳转目标activity。

特点:想要目标流程的activity或流程结束后回到调用app,则需要FLAG_ACTIVITY_NEW_TASK+目标activity指定单独的taskAffinity,如果是目标流程中所有activity随时要回到调用app,则所有目标流程中的activity都指定同一个taskAffinity,不同于默认taskAffinity。不然回退到目标应用的历史activity栈,而不能直接回到调用app。这样目标activity所在的新栈空时会默认回到上一个前台应用,也就是回到了调用app.

另外,FLAG_ACTIVITY_MULTIPLE_TASK这个Intent flag很有意思,可以与FLAG_ACTIVITY_NEW_TASK搭配,使要启动的activity无视历史的栈,直接根据要启动的activity的taskAffinity创建并加一个新的栈,即使同样taskAffinity栈已经存在了也会新建。

第二种还有一个方式:调用app自己在收到其他app调用结束的回调时,在回调中通过Intent.FLAG_ACTIVITY_REORDER_TO_FRONT可以直接将调起app的调起页面推至前台且放置在所在栈的顶部,即实现从目标activity回到原调用app的原页面。

还可以在调用app中通过aidl向其他app传递PendingIntent或调用app调起页面的包名和类名,也是结合FLAG_ACTIVITY_REORDER_TO_FRONT,在其他app的服务Service中直接将调用app的调用页面推到前台。

注意,FLAG_ACTIVITY_REORDER_TO_FRONT的使用,如果对应的activity已经在栈中则不会重建这个activity,但会走onnewintent。

相关推荐
BoomHe7 小时前
Android Framework 文件应用移植到 AndroidStudio
android
传奇开心果编程8 小时前
【Jetpack Compose基础语法学与练】第8课 rememberSaveable,页面旋转/系统重建保留状态
android·学习·ui·kotlin·android jetpack
>Andre<8 小时前
UFS5.0标准中文全译·卷一:范围、术语与架构
android·linux·嵌入式硬件
事圆则缓9 小时前
Java 8 Lambda、Stream、Optional 与 Android 边界:从回调语法到运行时兼容
android·java
mmsx9 小时前
Android 地图十万要素不卡顿:空间网格 + 渐进式加载的移动端实践
android·大数据·opengl
Godikov11 小时前
Android 工业终端保活实战:前台服务 + 开机自启 + 更新自启的三重保障
android
字节暗面11 小时前
SO加固强度怎么量化?腾讯ACE与FairGuard静态分析实测
android·逆向
终端安全笔记13 小时前
描述文件、企业证书、MDM 不是三个名字,是三层
android·ios·智能手机
字节暗面13 小时前
一次游戏安全SO静态分析记录:腾讯ACE与FairGuard加固强度对比
android·逆向工程·游戏加固
传奇开心果编程13 小时前
【Jetpack Compose基础语法学与练】第9课 SideEffect副作用 + LaunchedEffect,处理异步任务和生命周期
android·学习·ui·kotlin·android jetpack