这里有两套API,分别是:
Settings.System:它通过 ContentResolver 与系统的设置提供者进行交互,从而获取或设置相关值。
这个方法适用于读取和设置一些系统级别的设置,比如屏幕亮度、音量等。
SystemProperties:这个方法用于获取设备的系统属性值。
它直接访问 Android 系统中的属性,而不是通过ContentResolver进行交互。
这个方法通常用于读取一些系统底层的属性,比如设备型号、系统版本等。
注意,SystemProperties 类的方法需要系统级权限,一般的应用程序无法直接访问。
Settings.System相关api使用方法:
// 首先需要在xml中申明WRITE_SETTINGS权限:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//其次在 Android 6.0(API 级别 23)及以上版本,WRITE_SETTINGS 权限属于危险权限,需要在运行时动态请求。如果你的、应用需要读取系统设置,则应在代码中检查并请求此权限,否则将会抛出 SecurityException 异常。
// 读取值:
Settings.System.getInt(getContentResolver(), "key名", 默认值); //根据值类型,调用getInt、getBoolean、getString等。
// 设置值:
Settings.System.putString(getContentResolver(), "key名", 值); //根据值类型,调用putInt、putString等。
//另外还可以直接用adb 读取和设置值:
adb shell settings get system key名
adb shell settings put system key名 值
SystemProperties相关api使用方法:
注意androidstudio可能会找不到SystemProperties相关api,可能需要你手动修改替换编译的android.jar包路径。另外
SystemProperties是系统隐藏api,通常显示会是红色的(但这不代表他有错,还是能够编译通过和运行的)。
读取值:
SystemProperties.getBoolean("key名称", true); //根据值类型,调用getBoolean(key,def)、getInt(key,def)、getLong(key,def)、get(key,def)直接获取String值。
SystemProperties.set("key名称", "值"); //注意 不管值是什么类型,都只能通过set方法设置,且值需包裹成String。并未提供诸如setInt、setBoolean方法。
//另外还可以直接用adb 读取和设置值:
adb shell getprop key名
// 写是需要root权限的
adb root
adb shell setprop key名 值