关于Android(安卓)properties 中ro开头无法修改的问题
16lz
2021-01-26
熟悉Android开发的小伙伴都知道,build.prop里存在很多选项,其中ro开头的选项无法通过SystemProperties.set方法进行修改。这里除了Selinux的原因还有本身propertyservice里的限制,我们看看代码
system/core/init/property_service.c
298 int property_set(const char *name, const char *value) 299 {300 prop_info *pi;301 int ret;302 303 size_t namelen = strlen(name);304 size_t valuelen = strlen(value);305 306 if (!is_legal_property_name(name, namelen)) return -1;//判断一下是否符合格式307 if (valuelen >= PROP_VALUE_MAX) return -1;//判断一下是否超过长度308 309 pi = (prop_info*) __system_property_find(name);310 311 if(pi != 0) {312 /* ro.* properties may NEVER be modified once set */313 if(!strncmp(name, "ro.", 3)) {314 return -1;//这个if就是关键所在了。判断一下是否是ro.开头,如果是就返回。315 }
因此,如果需要指定某个ro.选项可以修改的可以再多判断ro.xxx是否符合如果符合,这里可以不用返回-1而是继续走下面代码的流程。
更多相关文章
- new Date(time).getTime()在ios返回NaN
- 史上最全的常用开发工具类收集(持续更新中)
- android判断是否加载SD卡
- 判断Android是否有root权限
- 判断网络状态
- Android(安卓)ExpandableListView使用小结(一)
- Android判断程序前后台状态
- BroadcastReceiver
- 【Android】判断某个App是否安装并启动(queryIntentActivities),