Android 多种方式修改Settings数据库

2023-11-07

若有获取Context的其他方法,还请走过路过的大佬不吝赐教.

Android原生涉及到了众多属性及默认值,其中有部分就存储在Settings数据库中,地址如下:       

Android/frameworks/base/core/java/android/provider/Settings.java 

譬如在原生设置中的大部分开关就和此数据库息息相关,在调试过程中,我们有很多可能会绕过原生设置,直接修改数据库以达到目的.

才疏学浅的归纳出我所知道的两种方法:

①利用Context设置.

②利用ADB指令设置.

那么在可获得Context的情况下,可直接按照常规方式修改.

Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 1);

但在很多情况下,无法获取Context,那么我们如何获取Context就成了难点.

学习到了两种方式,粘贴出来供参考:

    private Context getContext() {
        if (Looper.myLooper() == null) {
            Looper.prepare();
        }

        Context topContext = null;
        try {
            topContext = ActivityThread.currentApplication().createPackageContext(ActivityThread.currentPackageName()
                    , Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }

        if (Looper.myLooper() == null) {
            Looper.loop();
        }
        return topContext;
    }
    public Context getContext() {
        if (Looper.myLooper() == null) {
            Looper.prepare();
        }
        ActivityThread thread = ActivityThread.systemMain();
        Context context = thread.getSystemContext();
        if (Looper.myLooper() == null) {
            Looper.loop();
        }
        return context;
    }

方法是跟大佬学习,他更推荐用上述第一种.但在实测中,在日常系统运行阶段调用可正常试用,但在Android开机阶段调用有概率会出现空指针的问题,进而导致进入Recover阶段.
使用有风险,添加需谨慎!!!

若有获取Context的其他方法,还请走过路过的大佬不吝赐教.

第二种方式就是通过ADB指令去设置数据库 .

ADB 设置Settings数据库值                 

adb shell settings put global device_provisioning_mobile_data 1

ADB 获取Settings数据库值

 adb shell settings get global device_provisioning_mobile_data

既然可以通过ADB去设置,同理就可以通过设置标,继而将ADB指令通过rc文件去执行.实现如下

Android/system/core/rootdir/init.rc

on property:sys.boot_completed=1 && property:persist.vendor.test.flag=1
exec u:r:shell:s0 root root -- /system/bin/settings put Secure accessibility_display_daltonizer_enabled 1

sys.boot_completed = 1 表示 系统启动.

系统启动后,当persist.vendor.test.flag=1时,就会触发下述的指令,继而修改数据库的值.

这种方法暂时没发现问题,可以解决无法获取Context导致无法修改数据库的窘境.

若有获取Context的其他方法,还请走过路过的大佬不吝赐教.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 多种方式修改Settings数据库 的相关文章

随机推荐

  • 真实!大概五分之一的年轻人存款在一万元以内。

    近日 有调查称 大概五分之一的年轻人存款在一万元以内 10万元存款是一个 坎 存款超过10万就会超过53 7 的人 年轻人 存款 两个词碰撞在一起 引来了广泛的关注和讨论 你认为年轻人存款难吗 可以从以下几个角度发表你的看法 角度一 你的目
  • 计算机应用问题,计算机应用的现状与发展的问题

    计算机应用的现状与发展的问题 来源 职称阁时间 2018 07 27 11 59热度 这篇论文主要介绍的是计算机应用的现状与发展的问题的相关内容 本文作者就是通过对计算机的应用现状等内容做出详细的阐述与介绍 特推荐这篇优秀的论文供相关人士参
  • 【C++设计模式】依赖倒转原则

    2023年8月30日 周三上午 目录 概述 含义 举个简单的例子 传统做法 使用依赖倒转原则 代码说明 再举一个具体的例子 以生活为例 概述 依赖倒转原则 Dependency Inversion Principle DIP 是面向对象设计
  • Hadoop 端口

    1 系统 8080 80 用于tomcat和apache的端口 22 ssh的端口 2 Web UI 用于访问和监控Hadoop系统运行状态 Daemon 缺省端口 配置参数 HDFS Namenode 50070 dfs http add
  • Shiro源码分析-----认证流程/授权流程----------Subject

    本文转载自 认证流程和授权流程 源码分析的第二篇以Subject的初始化为题 一 回顾Apache Shiro创建Subject的步骤如下 1 获取SecurityManager工厂 此处使用Ini配置文件初始化SecurityManage
  • csgo删除服务器地图在哪个文件夹,CSGO de_cache地图

    资源说明 CSGO de cache地图 由 Volcano 制作 需要的玩家不要错过哦 资源详情 Sal Volcano Garozzo发布了其最新制作的CS GO地图de cache Volcano制作的首个地图de nuke ve 相
  • Java请求合并与分而治之

    在系统设计的时候 你是否也遇到过这两个问题 1 大量请求造成数据库压力过大 2 大量数据库查询造成请求执行时间过长 本文将介绍在高并发 大数据环境下 以上两种问题的应对思路 一 请求合并 首先思考一个场景 在高并发的系统中 在每秒内有大量的
  • 全连接神经网络单层模型原理

    全连接神经网络单层模型原理 前言 单层MLP 1 前向传播 2 激活函数 2 1 Sigmoid函数 2 2 tanh函数 2 3 ReLu函数 2 4 Leaky ReLu函数 3 损失函数 4 梯度下降 前言 深度学习是学习样本数据的内
  • ​少儿机器人编程与三大主课关系

    说到机器人编程 在常规概念里 很难将其和三大主课联系到一起 回首过去 国家并不提倡未成年人去学专业技术含量较高的机器人编程教育的 格物斯坦提示 但随着现在老龄化的社会现象的出现 国家需要大批有志少年用高科技方式去改造社会 这就要精通机器人编
  • SpringBoot启动控制台的banner是怎么回事

    前言 每次启动SpringBoot项目时 总是能看到控制台打印了一串字符 隐约能辨认出是 Spring 不知大家是否也好奇过是怎么实现的 是直接打印固定的字符串 还是根据什么算法去生成的 于是闲暇无事 探究一番 只想修改banner可以跳到
  • 时间序列分解VMD和长短记忆神经网络lstm

    这篇记一下时间序列分解和长短记忆神经网络lstm如何一起用 vmd lstm 用python实现 首先预设的流程是 读取数据 vmd时间分解 把信号分解成5行 最大最小归一化 给模型设置参数 编译 fit函数 训练 反归一化 得到的五个信号
  • 内存的分区

    内存 物理内存 虚拟内存 物理内存 计算机真正的内存 虚拟内存 为了减缓物理内存的使用 将硬盘的一部份容量虚拟成虚拟成内存 程序员视野中看到的是虚拟地址 在32的操作系统内 每个进程的寻址范围是2 32 地址一般我们使用16进制表示 0x0
  • HTTP协议是什么?有什么作用?

    HTTP协议 Hyper Text Transfer Protocol HTTP 全称为 超文本传输协议 是客户端浏览器或者是其他的程序和Web服务器之间的应用层通信协议 它通常运行在TCP之上 它指定了客户端可能发送给服务器什么样的消息以
  • python学习(一) windows开发环境搭建+linux运行环境

    朋友向我推荐了python 说怎么怎么好 计划用10 12次学习完成python的初步掌握和了解 学习一门语音 最快的方法就是自己搭建环境 并且写hello world 所以第一节就从开发环境搭建和运行环境搭建开始 一 目标 开发环境和运行
  • Android系统签名介绍

    一 签名原理介绍 apk的签名 简单说开发者可以通过签名 对应用进行标识和更新 包名在一个设备上是唯一的 这样可以避免被相同包名应用随意覆盖安装 这是一个非常重要的安全功能 系统中的签名文件 也是对系统中应用进行签名 编译应用是可以指定签名
  • Echarts中tooltip添加单位

    案例 代码 tooltip trigger axis axisPointer type cross crossStyle color 999 formatter function params var relVal params 0 nam
  • freemarker导出pdf

    freemarker模板导出doc的之前有写过 这里就不再多说了 不清楚的可以看之前的文章Freemarker 模板导出 带图片 转换后的文件展示 FreemarkerUtils工具类 这里用的工具类导出和之前不一样 不仅仅是页面进行下载
  • 查看服务器cpu和内存信息

    先安装硬件信息获取工具dmidecode yum y install dmidecode 查看CPU详细信息 1 查看CPU物理个数 grep physical id proc cpuinfo sort u wc l 2 查看CPU核心数
  • 如何去掉网页复制到word后的黑(或灰)背景色

    复制网页到word后 文字有时会带有黑色或灰色背景 看着很累 十分让人的讨厌和无奈 解决的方法 1 先将复制网页到记事本后 再将记事本中的复制到word 结果 背景色是没有了但是网页上的图也没有了 只得文字和图片分开复制 图片直接复制到wo
  • Android 多种方式修改Settings数据库

    若有获取Context的其他方法 还请走过路过的大佬不吝赐教 Android原生涉及到了众多属性及默认值 其中有部分就存储在Settings数据库中 地址如下 Android frameworks base core java androi