[高通SDM450][Android9.0]拦截指定应用跳转界面

news/2024/11/16 0:49:06/

文章目录

    • 开发平台基本信息
    • 问题描述
    • 解决方法
      • 拦截输入法跳转

开发平台基本信息

芯片: SDM450
版本: Android 9.0
kernel: msm-4.9

问题描述

客户要求设备只允许显示客户应用,不允许任何方式退出客户应用;但是,客户应用有留言功能,能调起输入法,而输入法都自带设置跟皮肤功能,即使是最简洁的谷歌拼音同样也有这个问题;所以客户要求禁止跳转到输入法的设置界面。

解决方法

解决方案也比较简单,Android跳转界面是通过startActivity实现的,所以,我们只要在startActivity的时候,把输入法的设置、皮肤界面拦截下来即可,这种方式还可以延伸到任何一个应用,只要应用的包名跟跳转的界面名知道,就可以进行拦截。

拦截输入法跳转

diff --git a/frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java b/frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java
old mode 100644
new mode 100755
index 31c93a1..ec17cec
--- a/frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java
+++ b/frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java
@@ -16,6 +16,7 @@package com.android.server.am;+import android.os.SystemProperties;import static android.app.Activity.RESULT_CANCELED;import static android.app.ActivityManager.START_ABORTED;import static android.app.ActivityManager.START_CANCELED;
@@ -1024,6 +1025,15 @@ class ActivityStarter {// Collect information about the target of the Intent.ActivityInfo aInfo = mSupervisor.resolveActivity(intent, rInfo, startFlags, profilerInfo);+       if("off".equals(SystemProperties.get("persist.custom.input.settings", "on"))){
+               Slog.w(TAG, "======================== callingPackage:" + callingPackage + "&& intent.getComponent().getClassName():" + intent.getComponent().getClassName());
+               if(("com.google.android.inputmethod.pinyin".equals(callingPackage) && "com.google.android.apps.inputmethod.pinyin.preference.SettingsActivity".equals(intent.getComponent().getClassName())) || 
+                       "com.google.android.inputmethod.pinyin".equals(callingPackage) && "com.google.android.apps.inputmethod.libs.theme.preference.ThemeSelectorActivity".equals(intent.getComponent().getClassName())){
+                               SafeActivityOptions.abort(options);
+                               return ActivityManager.START_SWITCHES_CANCELED;
+               }
+       }
+synchronized (mService) {final ActivityStack stack = mSupervisor.mFocusedStack;stack.mConfigWillChange = globalConfig != null

注:我这里加了属性判断,默认是不拦截的,设置属性为on才会执行拦截,如果不需要,也可以去掉。


http://www.ppmy.cn/news/724935.html

相关文章

sdm450的显示屏兼容配置

目录 一、读取显示屏id 二、区分不同屏幕id 转载请备注:daisy.skye的博客_CSDN博客-Qt,嵌入式,Linux领域博主 一、读取显示屏id 相关函数 int mdss_dsi_panel_initialize() 文件路径 /home/scooper/workspace/ljh/sdm450/bootable/bootloa…

[高通SDM450][Android 9.0] 虹软人脸算法WIFI信息变化导致授权失败

虹软人脸算法WIFI信息变化导致授权失败 开发平台基本信息补丁下载地址前言问题描述解决方法 开发平台基本信息 芯片: 高通SDM450 版本: Android 9.0 kernel: msm-4.9 补丁下载地址 https://gitee.com/Hebin320/csdn_patch 前言 人脸算法授权会获取设备终端的一些硬件信息进…

[高通SDM450][Android9.0]CTA认证--去除某些应用开机使用定位权限

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: SDM450 版本: Android 9.0 kernel: msm-4.9 问题描述 设备在进行入网认证,实验室在测试的时候,发现有应用会在开机启动的时候,使用定位功能,而实验室要求应…

[高通SDM450][Android9.0]adb无法进行remount的解决方案

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: SDM450 版本: Android 9.0 kernel: msm-4.9 问题描述 在调试开发的时候,执行remount可以获得更高的权限,对系统的一些应用或者文件进行删除或替换,达到快速调试的目的&…

SDM450平台移植plsensor(stk3337)

一、硬件原理图,连接如下: 从上述的原理图我们可以得到管脚的连接: SENSOR_I2C_SCL1 --->GPIO14 SENSOR_I2C_SDA1 --->GPIO15 EINT-PS ---> GPIO60 2.1 首先跟FAE获取当前项目的驱动代码: 2.2 如下是在cp侧的代码修改如下&am…

[高通SDM450][Android9.0]user版本uartlog常开

文章目录 开发平台基本信息问题描述解决方法user版本调试串口可输入user版本uartlog常开 开发平台基本信息 芯片: SDM450 版本: Android 9.0 kernel: msm-4.9 问题描述 user版本调试串口默认只输入调试信息,无法输入指令user版本,调试串口日志在开机进…

高通SDM450 ADC读取电池驱动调试

由于项目需要,使用的sdm450模块不带PMIC电源管理的,而项目又需要接电池使用,所以硬件把电池端接到一个ADC口,做了个简单的电池电路,通过ADC读取数值来确定电池电压,然后换算电池电量。 电池驱动流程 Andr…

Ubuntu 16.04 sdm450 modem编译

编译工具与安装位置: Hexgon Tool(2个) 按照默认位置安装就可以。 /home/mazhw/Qualcomm/HEXAGON_Tools llvm 3.5.2.4: /pkg/qct/software/llvm/release/arm 目录下创建目录3.5.2.4,将llvm解压后复制到此处。 gcc-linaro-aarch64-none-elf-4.9-2014.07_linux 安装位…