微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 如何确认是谁修改了SettingsProvider中某变量的值

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

时间:10-02 整理:3721RD 点击:

[DESCRIPTION]

有时候在SettingsProvider中的变量会变掉,但user并没有操作它,或许是被某个3rd的apk修改,我们可以通过以下方
式定位到是谁修改了变量。

[SOLUTION]

以下以Settings.Global.WIFI_SLEEP_POLICY为例,对应的value是wifi_sleep_policy,其他变量请具体配置对应
value:
1:修改Settings.Java (alps\php?mod=tag&id=6090" target="_blank" class="relatedlink">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可以找到是谁操作了变量。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top