当前位置: 首页 > news >正文

Android使用scheme方式唤醒处于后台时的App场景

场景:甲App唤醒处于后台时的乙App的目标界面,且乙App的目标界面处于最上层,即已经打开状态,要求甲App使用scheme唤醒乙App时,如从桌面icon拉起App效果一致。

一、方式一

1、甲App跳转intent配置如下:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("schemeurltest://hostdemo"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
startActivity(intent);

其中schemeurltest://hostdemo为乙App的目标界面scheme地址;

其中intent必须添加 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)

2、乙App的目标界面Activity清单文件设置如下:

<activity android:name="com.xxx.yyy.TestActivity"android:exported="true"android:theme="@style/TransparentDialog"android:screenOrientation="behind"><intent-filter><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><action android:name="android.intent.action.VIEW" /><data android:scheme="schemeurltest"android:host="hosttest"/></intent-filter>
</activity>

注意这里不用配置启动模式 android:launchMode="" 

二、方式二

1、甲App跳转intent配置如下:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("schemeurltest://hostdemo"));
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
startActivity(intent);

其中 schemeurltest://hostdemo 为乙App的目标界面scheme地址;

其中intent必须添加 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

2、乙App的目标界面Activity清单文件设置如下:

<activity android:name="com.xxx.yyy.TestActivity"android:exported="true"android:theme="@style/TransparentDialog"android:launchMode="singleTask"android:screenOrientation="behind"><intent-filter><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><action android:name="android.intent.action.VIEW" /><data android:scheme="schemeurltest"android:host="hosttest"/></intent-filter>
</activity>

注意这里启动模式必须配置为:android:launchMode="singleTask" 

三、两种方式的区别

方式一,当启动intent设置为:intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED),可以不用设置启动App目标界面Activity的启动模式。

方式二,启动intent设置为:intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET),需要设置启动App目标界面Activity的启动模式为:android:launchMode="singleTask"。


http://www.mrgr.cn/news/65810.html

相关文章:

  • 开源竞争-数据驱动成长-11/05-大专生的思考
  • Aurora 64b/66bIP核学习
  • Vue:模板 MVVM
  • 15分钟学 Go 第 35 天:Go的性能调优 (7000字详细教程)
  • 运营篇|微信公众号如何关联安全知识学习小程序
  • Qt 调用libcurl 执行curl_easy_perform 闪退问题之记录
  • 【C++】继承的理解
  • 电脑虚拟机启动树莓派rviz
  • 【c++篇】:深入剖析vector--模拟实现属于自己的c++动态数组
  • SVD求解ICP旋转矩阵不正确处理
  • WorkFlow源码剖析——Communicator之TCPServer(中)
  • SpringBoot源码解析(一)
  • 响应式编程-reactor
  • 动态内存分配
  • 使用 pytorch 运行预训练模型的框架
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。
  • HTB:Shocker[WriteUP]
  • 如何在BSV区块链上实现可验证AI
  • 隆盛策略股票杠杆交易市场罕见,26只“牛股”提示风险
  • VSCode 1.82之后的vscode server离线安装
  • Centos使用yum获取离线安装包
  • springboot 单元测试-各个模块举例
  • 爱奇艺大数据多AZ统一调度架构:打破数据孤岛,提升效率
  • windows——病毒的编写
  • Fish Agent:集成 ASR 和 TTS 的端到端语音处理模型,支持多语言转换
  • 单体架构的 IM 系统设计