Android Systemproperties用法

本文介绍了Android系统的属性管理机制,包括如何使用ADB shell命令获取和设置系统属性,以及framework层访问系统服务的具体流程。同时提供了Java和C语言中设置与获取系统属性的方法。

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

一.System Property
adb shell getprop xxx;//获取属性值
adb shell setprop xxx xxx;//设置属性值
特别属性 :
  如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变
  如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。
  如果属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名。(这是很巧妙的。 netresolve模块的使用这个属性来追踪在net.*属性上的任何变化。)
  属性“ ctrl.start ”和“ ctrl.stop ”是用来启动和停止服务。每一项服务必须在/init.rc中定义.系统启动时,与init守护进程将解析init.rc和启动属性服务。一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该服务。这项服务的启动结果将会放入“ init.svc.<服务名>“属性中。客户端应用程序可以轮询那个属性值,以确定结果。
  
二.framework访问系统服务流程
1. \frameworks\base\core\java\android\os\SystemProperties.java

/**  * Gives access to the system properties store.  The system       properties  * store contains a list of string key-value pairs.  *  *
        {@hide}  */ 

注释告诉我们Systemproperties是用键值对来存储系统属性值的东西,是@hide属性,也就是说声明LOCAL_SDK_VERSION:=CURRENT的应用是无法调用的,这点需要注意;

2.Systemproperty通过JNI调用系统属性; 这里不做具体说明,具体实现参考: http://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html

三.在Java和C中的设置,获取方法
JAVA代码如下:

import android.os.SystemProperties;

SystemProperties.set("persist.sys.language", zone.getID());
String lang= SystemProperties.get("persist.sys.language");

//获取方法:

boolean fastfoodenable = SystemProperties.getBoolean("persist.sys.fastfoodenable", false);

//设置方法:

SystemProperties.set("persist.sys.fastfoodenable", "true");

C

#include <cutils/properties.h>

property_set("persist.sys.language", "zh");
property_get("persist.sys.language", propLang, "en");

这里写图片描述

  • 第一篇博客

只为励志!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值