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

MTK Android12 应用在最顶端时,禁止拉起其他某个应用(一)

1、需求

近期,客户要求应用在最顶端时,禁止拉起其他某个应用

2、解决方法

diff --git a/frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java b/frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java
index 0cd26b53d39..7e3037caecb 100644
--- a/frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -31,6 +31,7 @@ import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
 import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
 import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+import android.content.Context;
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
 import static android.content.Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT;
@@ -129,6 +130,7 @@ import com.android.server.wm.LaunchParamsController.LaunchParams;
 import java.io.PrintWriter;
 import java.text.DateFormat;
 import java.util.Date;
+import java.util.List;
 
 /**
  * Controller for interpreting how and then launching an activity.
@@ -802,6 +804,32 @@ class ActivityStarter {
         }
         return res;
     }
+	
+	
+	private boolean isForground() {
+        ActivityManager mActivityManager = (ActivityManager)mService.mContext.getSystemService(Context.ACTIVITY_SERVICE);
+        if (mActivityManager.getRunningTasks(1) == null) {
+            android.util.Log.d("hdxxx", "running task is null, ams is abnormal!!!");
+            return false;
+        }
+        List<ActivityManager.RunningTaskInfo> infoList = mActivityManager.getRunningTasks(1);
+        if(infoList.size() == 0){
+            android.util.Log.d("hxxx", "failed to get RunningTaskInfo");
+            return false;
+        }
+        ActivityManager.RunningTaskInfo mRunningTask = infoList.get(0);
+        if (mRunningTask == null) {
+            android.util.Log.d("hxxx", "failed to get RunningTaskInfo");
+            return false;
+        }
+        String pkgName = mRunningTask.topActivity.getPackageName();
+        android.util.Log.d("hxxx", "pkgName:" + pkgName);
+        if (pkgName.equals("*****")) {
+            return true;
+        }
+        return false;
+    }
+	
 
     /**
      * Executing activity start request and starts the journey of starting an activity. Here
@@ -959,7 +987,19 @@ class ActivityStarter {
                 err = ActivityManager.START_NOT_VOICE_COMPATIBLE;
             }
         }
-
+		android.util.Log.d("hdxxx", "==============isForground():" + isForground());
+		if(isForground()){
+			if(intent!= null){
+				if(intent.getComponent()!= null){
+					String packageName = intent.getComponent().getPackageName();
+					if (packageName.equals("************")){
+						Slog.d("Activitystarter","start abort, sensor status abnormal");
+						return START_ABORTED;
+					}
+				}
+			}
+		}
+		
         final Task resultRootTask = resultRecord == null
                 ? null : resultRecord.getRootTask();
 

相关文章:

  • docker环境下安装flink
  • vector(沉淀)
  • 使用Azure CDN进行子域名接管
  • 解锁 DeepSeek 安全接入、稳定运行新路径
  • vulhub-joker攻略
  • VulnHub-Billu_b0x通关攻略
  • 【C++】多态
  • CCF-CSP认证 202206-1归一化处理
  • Compose 的产生和原理
  • MySQL超详细介绍(近2万字)
  • 穆迪暖色调人像静物摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 生成PDF文件:从html2canvas和jsPdf渲染到Puppeteer矢量图
  • Android Handler 通过线程安全的 MessageQueue 和底层唤醒机制实现跨线程通信
  • 【嵌入式学习】如何利用gitee管理记录学习内容
  • 多线程—进程与线程
  • 【软考-架构】8.2、开发方法-TPC-MIS-DSS
  • RSI 量化策略实战指南:基于 iTick 报价源的 Python 实现
  • 卷积神经网络 - 卷积层
  • 库的制作与原理 linux第课
  • LORA的AB矩阵是针对Transformer的多头还是MLP
  • 酒店取消订单加价卖何以屡禁不绝?专家建议建立黑名单并在商家页面醒目标注
  • 宁波市人大常委会审议生育工作报告,委员建议学前教育免费
  • 过半中国上市公司去年都在“扩编”,哪些公司人效最高
  • 央行行长详解降准:将释放长期流动性1万亿,整体存款准备金率平均水平降至6.2%
  • 蓝佛安:中方将采取更加积极有为的宏观政策,有信心实现2025年的5%左右增长目标
  • 山东滕州车祸致6人遇难,醉驾肇事司机已被刑事拘留