0
点赞
收藏
分享

微信扫一扫

大数据技术原理-MapReduce的应用

老罗话编程 2024-08-02 阅读 17
android

前言

        Settings 类是一个用于访问和管理设备设置的关键类,是 Android 系统中的一个关键类,它位于 framework/base/core/java/android/provider/ 目录下,是 Android 框架层提供的一部分,用于访问和修改系统设置。这个类为开发者提供了一个接口,让他们可以查询和修改用户和系统级别的偏好设置。这些设置包括但不限于音量、屏幕亮度、飞行模式、网络配置等。

         

一、主要功能和特点

  1. 访问系统设置Settings 类通过 Android 的内容提供者(Content Provider)机制,允许应用程序访问和修改系统设置。这些设置存储在数据库(通常是 settings.db)中,由 Settings.SystemSettings.GlobalSettings.Secure 等内部类进行管理。

  2. 内部类

    • Settings.System:用于访问和修改那些不依赖于特定用户账户的系统级设置。
    • Settings.Global:用于访问和修改全局设置,这些设置对所有用户都有效,但依赖于设备的当前用户。
    • Settings.Secure:用于访问和修改敏感的系统级设置,如密码、锁定屏幕信息等。
  3. 安全性:对于敏感信息的访问和修改,Android 系统提供了相应的权限控制。例如,修改 Settings.Secure 中的设置可能需要特定的系统权限。

  4. 设置名称和值Settings 类中的设置通常通过字符串名称来引用,并且与特定的值(如整型、字符串等)相关联。

案例

import android.content.ContentResolver;  
import android.content.Context;
import android.provider.Settings;

public class SettingsExample {

private Context context;

public SettingsExample(Context context) {
this.context = context;
}

// 查询屏幕亮度
public int getScreenBrightness() {
ContentResolver resolver = context.getContentResolver();
try {
return Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);
} catch (Settings.SettingNotFoundException e) {
// 如果没有找到设置,则返回默认值
return 127; // 示例值
}
}

// 修改屏幕亮度(注意:需要WRITE_SETTINGS权限)
public void setScreenBrightness(int brightness) {
ContentResolver resolver = context.getContentResolver();
Settings.System.putInt(resolver, Settings.System.SCREEN_BRIGHTNESS, brightness);
// 发送亮度改变的广播,通知系统更新UI
// 注意:在实际应用中,可能需要更多的权限或处理来确保这一操作的正确性
}
}

二 Settings.System、Settings.Secure、Settings.Global、Settings.Config这四个内部类各自负责着不同类型的设备设置。

public final class Settings {

public static class NameValueTable implements BaseColumns {

}

public static final class System extends NameValueTable {

}

public static final class Secure extends NameValueTable {

}

public static final class Global extends NameValueTable {

}

public static final class Config extends NameValueTable {

}
}

1、Settings.Global:
作用:用于管理设备的全局设置,这些设置通常是跨所有用户的,对所有应用程序可见且具有全局影响。
例子:Wi-Fi状态、自动时间、ADB调试状态、USB调试状态等。

2、Settings.System:
作用:用于管理设备的系统设置,包括控制设备的行为和外观。
例子:屏幕亮度、声音设置、时钟格式、振动设置等。

3、Settings.Secure:
作用:用于管理设备的安全设置和用户首选项,这些设置对用户的隐私和设备的安全性有直接影响。
例子:设备的锁屏方式、帐户和同步设置、位置提供程序设置等。

4、Settings.Config:
作用:这是一个较为特殊的类,用于读取和设置与设备配置相关的信息。
例子:设备的本地化语言、地区、键盘设置等。
权限:访问或修改这些配置通常需要相应的权限,例如 CHANGE_CONFIGURATION。

三、Settings设备设置属性的读写


1、Settings.Global
权限:访问或修改全局设置通常需要 WRITE_SETTINGS 权限;所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限
对应xml路径:/data/system/users/0/settings_global.xml

adb读写:
settings get global 系统属性key 或者 settings list global |grep 系统属性key
settings put global 系统属性key 系统属性值
settings delete global 系统属性key 

代码读写:

Settings.Global.getLong(context.getContentResolver(), key, defaltValue);
Settings.Global.putLong(mContext.getContentResolver(), key, value);


2、Settings.System
权限:访问或修改某些系统设置可能需要 WRITE_SETTINGS 权限;所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限;
对应xml路径:/data/system/users/0/settings_system.xml

adb读写:
settings get system 系统属性key 或者 settings list system |grep 系统属性key
settings put system 系统属性key 系统属性值

代码读写:

Settings.System.getLong(context.getContentResolver(), key, defaltValue);
Settings.System.putLong(mContext.getContentResolver(), key, value);


3、Settings.Secure
权限:访问或修改某些安全设置可能需要 WRITE_SECURE_SETTINGS 权限;安全性的用户偏好系统设置,第三方APP有读没有写的权限。
对应xml路径:/data/system/users/0/settings_secure.xml

adb读写:
settings get secure 系统属性key 或者 settings list secure |grep 系统属性key
settings put secure 系统属性key 系统属性值

代码读写:

Settings.Secure.getLong(context.getContentResolver(), key, defaltValue);
Settings.Secure.putLong(mContext.getContentResolver(), key, value);






参考

Android 12系统源码_SystemUI(一)SystemUI的启动流程_android systemui-CSDN博客


 

举报

相关推荐

0 条评论