如何确认是谁修改了SettingsProvider中某变量的值

本文介绍了一种定位Android系统中被第三方应用非法修改的全局设置变量的方法。通过在Settings和ContentResolver类中增加日志记录,可以追踪到修改特定设置变量的应用,并附上步骤指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[DESCRIPTION]
有时候在SettingsProvider中的变量会变掉,但user并没有操作它,或许是被某个3rd的apk修改,我们可以通过以下方式定位到是谁修改了变量。
 
[SOLUTION]
以下以Settings.Global.WIFI_SLEEP_POLICY为例,对应的value是wifi_sleep_policy,其他变量请具体配置对应value:
1:修改Settings.java (alps\frameworks\base\core\java\android\provider) 中
在class Secure 内部类的
public static boolean putStringForUser(ContentResolver resolver, String name, String value,
int userHandle) {
的后面添加
if(name.equals(Settings.Global.WIFI_SLEEP_POLICY)){ //add begin
Log.d(TAG,"@@## name = "+ name+ "value = "+value,new Exception("Settings"));
} //add end

2:修改
ContentResolver.java (alps\frameworks\base\core\java\android\content)中
public final Uri insert(Uri url, ContentValues values)
{
后添加
if(values.containsKey("wifi_sleep_policy")){//add begin
Log.d("Settings","@@##@@ url = "+ url+", values = "+ values,new Exception("Settings"));
}//add end
public final int update(Uri uri, ContentValues values, String where,
String[] selectionArgs) {
后添加
if(values.containsKey("wifi_sleep_policy")){//add begin
Log.d("Settings","@@## url = "+ uri+", values = "+ values,new Exception("Settings"));
}//add end
 
3、复制问题并提供main_log,通过对应的callstack可以找到是谁操作了变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值