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

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.kler.cn/a/379434.html

相关文章:

  • SpringBoot新闻稿件管理系统:架构与实现
  • 原来大佬的测试用例都是这样写的...
  • 富格林:拆穿欺诈套路平稳出金
  • 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--接口路径管理
  • 1.探索WebSocket:实时网络的心跳!
  • npm入门教程2:npm历史
  • Python复习2
  • 笔记-利率学习记录
  • easy-es使用以及Es和MySQL同步
  • Go-Sqlite3学习
  • “格格不入”的星瑞东方曜,燃油市场有麻烦了
  • 进程守护SuperVisord内部的进程定时监测并重启
  • 2024年华为OD机试真题-最小的调整次数-Python-OD统一考试(E卷)
  • locust压测工具环境搭建(Linux、Mac)
  • FBX福币交易所国际油价突然大涨!美伊针锋相对
  • json-server的使用(根据json数据一键生成接口)
  • jenkins自动化构建vue(web)项目并部署(项目实战)
  • RocketMQ可视化工具- Dashboard 使用教程 (附带可下载文件)
  • gulp入门教程14:vinyl
  • Git学习记录
  • MoonNet基准测试更新
  • springboot3项目整合Mybatis-plus启动项目报错:Invalid bean definition with name ‘xxxMapper‘
  • 基于SpringBoot+微信小程序+协同过滤算法+二维码订单位置跟踪的农产品销售平台-新
  • 一文搞懂python虚拟环境配置及使用pyenv进行python多版本管理
  • RT-Thread学习
  • 基于SSM+微信小程序的社团登录管理系统(社团1)