[SDM450][Android9.0] 禁止第一次使用谷歌拼音输入法弹出申请使用联系人弹框

本文主要是介绍[SDM450][Android9.0] 禁止第一次使用谷歌拼音输入法弹出申请使用联系人弹框,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

国内的固件需要内置谷歌拼音输入法,而刷完机后第一次使用谷歌拼音,都会弹出一个弹框申请使用联系人权限,即使默认给了运行时权限也还会弹出这个弹框。

解决方案

在Dialog.java中根据包名,将谷歌输入法的弹框禁止掉即可。

--- a/frameworks/base/core/java/android/app/Dialog.java
+++ b/frameworks/base/core/java/android/app/Dialog.java
@@ -58,6 +58,7 @@ import android.view.Window;import android.view.WindowManager;import android.view.accessibility.AccessibilityEvent;+import android.widget.TextView;import com.android.internal.R;import com.android.internal.app.WindowDecorActionBar;import com.android.internal.policy.PhoneWindow;
@@ -309,7 +310,15 @@ public class Dialog implements DialogInterface, Window.Callback,onStart();mDecor = mWindow.getDecorView();
-
+        //新增start
+        String packageName = mContext.getApplicationContext().getPackageName();
+        if("com.google.android.inputmethod.pinyin".equals(packageName)){
+            int id = mContext.getResources().getIdentifier("com.google.android.inputmethod.pinyin:id/body", "id", null);
+            TextView  textView= (TextView)mDecor.findViewById(id);
+            if(textView!=null){
+                String  HINTTEXT= "为了方便您输入联系人姓名,谷歌拼音输入法将会访问您的联系人列表以获取姓名。另外,开启词典更新功能将需要用到网络连接。我们保证这些权限的使用是透明和安全
的,不会将其用于未告知您的地方。";
+                Log.d("HINTTEXT",textView.getText().toString());
+                if(HINTTEXT.equals(textView.getText().toString()))return;
+            }
+        }
+        //新增end

功能扩展

在某些使用场景中,要求系统尽可能地禁止被退出客户应用,保证客户的应用一直处于前台;而谷歌拼音输入法有个切换皮肤功能,可以跳转到系统设置,从而有了退出客户应用的途径;于是客户要求禁止跳转到输入法皮肤设置界面;解决方案原理与上面的方式类似,在Activity跳转到时候,根据包名禁止应用跳转。

--- 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 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);+        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

这篇关于[SDM450][Android9.0] 禁止第一次使用谷歌拼音输入法弹出申请使用联系人弹框的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/203043

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi