android 添加系统属性Settings.system

今天需要通过Settings对系统UI功能进行设置管理;


简单做个记录,下面看如何处理;


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


添加你需要的name:

public static final String PHONE_NAME = "phone_name_status";

/**
 * M: CR ALPS02301563, for unread contacts num.
 * @hide
 */
public static final String CONTACTS_UNREAD_KEY = "com_android_contacts_mtk_unread";
/**


Settings添加权限:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />


通过代码设置,控件根据自己业务需求实现,下面只对主要代码参考:


Setting需设置代码设置如下:

ContentResolver resolver = mContext.getContentResolver();
if(value==0){
    Settings.System.putInt(resolver ,Settings.System.PHONE_NAME ,1);
}else {
    Settings.System.putInt(resolver,Settings.System.PHONE_NAME ,0);
}

下面是如何用来获取;


ContentResolver resolver = mContext.getContentResolver();
int value = Settings.System.getInt(resolver, Settings.System.PHONE_NAME , 1);
if (value != 0) {
    if (View.getVisibility() == View.GONE) {
        
   //这里就是你要干的事情;
    }else{
}

以上就写完了,权限貌似只有系统Settings才可以用设置,三方app好像不行;


微笑希望路过的同学,能给提供更好的建议和方法;



<think>嗯,用户想了解android.os.SystemProperties.getBoolean的使用方法和示例。首先,我需要回忆一下这个方法的参数和返回值。记得这个方法有两个参数,第一个是键(key),第二个是默认值(def)。当系统属性不存在或无法解析时,会返回这个默认值。 接下来,我需要确认权限问题。因为系统属性通常受保护,普通应用可能没有权限读取或写入某些属性。特别是像ro.debuggable这样的属性,可能需要系统签名或系统权限才能访问。这一点在引用[1]和[3]中都有提到,所以必须提醒用户注意权限限制。 然后,用户可能需要一个实际的示例代码。我应该提供一个简单的Java示例,展示如何调用getBoolean方法。例如,检查系统是否处于调试模式,使用默认值false。同时,要指出需要导入android.os.SystemProperties类,但根据引用[2],有些情况下这个类可能不可见,特别是在非系统应用中。这时候可能需要反射或者其他方法,但用户的问题主要是关于直接使用,所以先给出标准用法,再提到可能的兼容性问题。 另外,常见问题部分需要涵盖类找不到的情况,权限不足的解决方法,以及如何处理默认值。比如,如果遇到类缺失,可以考虑反射或系统级SDK;权限问题可能需要系统签名或提升应用权限。这些信息在引用[2]和[3]中都有涉及,需要整合到回答中。 还要注意用户可能是在开发系统应用或需要特定系统权限的应用,所以示例和解决方案需要针对这些场景。比如,系统应用可以直接使用,而普通应用可能需要其他变通方法。同时,确保示例代码语法正确,避免错误。 最后,生成相关问题时要围绕SystemProperties的其他方法、权限问题、替代方案等,帮助用户扩展了解相关内容。确保引用标记正确,比如权限问题引用[1][3],类找不到引用[2]。</think>### android.os.SystemProperties.getBoolean 方法解析 #### 1. 方法定义 `SystemProperties.getBoolean` 用于读取Android系统属性中的布尔值,语法为: $$boolean\ getBoolean(String\ key,\ boolean\ def)$$ - **参数说明**: - `key`:系统属性名称(如`persist.sys.debug`) - `def`:当属性不存在或无法解析时的默认返回值 #### 2. 使用条件 - **系统级权限**:需`android.uid.system`权限或系统签名[^1][^3] - **可见性限制**:部分属性仅对系统进程可见(如`ro.`开头的属性) #### 3. 示例代码 ```java // 检查系统调试模式状态 boolean isDebuggable = SystemProperties.getBoolean("ro.debuggable", false); Log.d("SystemProp", "Debug mode: " + isDebuggable); ``` #### 4. 常见问题解决 | 问题场景 | 解决方案 | |---------|----------| | 类找不到错误 | 添加`frameworks-base-core.jar`依赖[^2] | | 权限不足 | 配置`AndroidManifest.xml`添加系统权限[^3] | | 返回值异常 | 检查属性命名规范及作用域限制 | #### 5. 兼容性建议 对于非系统应用,建议改用`Settings.Global`或反射机制获取属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值