iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android中Property模块的键值设置
  • 352
分享到

Android中Property模块的键值设置

键值Android 2022-06-06 01:06:33 352人浏览 泡泡鱼
摘要

Android中Property模块的键值设置 Prop模块是保存少量的全局共享信息,其保存的数据具有信息量少,跨进程共享数据等特性;每一条信息包含两个属性,键名和键名对应的键

Android中Property模块的键值设置

Prop模块是保存少量的全局共享信息,其保存的数据具有信息量少,跨进程共享数据等特性;每一条信息包含两个属性,键名和键名对应的键值,例如:


ro.product.locale.language=en

“Ro.product.locale.language”表示本产品本地语言,表示该条信息的名字,“en”表示该条信息的取值为英文,这样任何一个应用程序就知道本机使用的语言情况。在接口设计时也需要有两个参数,name和value(键名和键值),方法有set和get,例如:


Set(String name,String value);
String Get(String name);

当然,无论上层怎么设计,在C底层键名name和键值value都是以char数组进行保存的,因为设计者并不知道传入name和value的数据大小。

Android.os.SystemProperties类中对prop模块进行了封装,该类使用Set和Get直接进行设置和获取,当然这些java接口最终还是调用系统接口完成的。在jni层有一个property_service.c文件,文件中有对应的实际处理接口,这些接口即可以给java调用,也可以一些系统命令使用(例如setprop和getprop命令就是调用这些接口方法)。SystemProperties类中的get方法没有什么限制,但是set方法就有权限的限制,应用程序是不能随便使用set接口的。

SystemProperties类的访问必须要有系统权限,并且应用的uid必须是系统id:1000或者为root:0。因为set和get操作不同,set时该操作建立了一个Socket管道通过发cmd出去完成的,服务端接收cmd同时比较权限,关键代码如下:


if (uid == aiD_SYSTEM || uid == AID_ROOT)
  return check_control_Mac_perms(name, sctx);

只有权限是AID_SYSTEM(系统ID)和AID_ROOT(root用户ID)才能通过验证;而get没有权限检查,不过试想也正常,如果谁都能进行修改,那这黑客也太好当了。当然个人觉得,对于set的设计使用权限验证无可厚非,但对于查看系统属性这样的功能(get),应该还可以进行细分,比如有些属性是不重要的,任何进程和用户都可以读取使用;当然有些敏感的数据在指定读取权限时也可以进行指定(由于时间有限本人没有更深入的细读,也不知道android系统是否完成了这些功能)。

设置键值名时需要注意的地方

在进行设置时,包含两个参数,变量名和变量值,形如:[[key]]: [[value]]。如果原来没有对应的key值,那么就会在该模块中创建一个新的键值,否则覆盖原有键值。对于键值名在设计时最好按规范书写,比如“类名.模块.用途”,这样清晰可记而且不容易冲突。另外,如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。这个判断动作是在property_service.c中的property_set函数中完成的:


if(!strncmp(name, "ro.", 3)) return -1;

如果是以“persist.”开头,当设置这个属性时,其值也将写入/data/property/目录中,键值名就是该属性名,下次开机重新加载和读取该属性;该文件中的load_persistent_properties函数就是用来完成该功能。特别的属性名以“net.change”开头那么其值中必须以“net.”开头,例如键值名为[net.change]: 那么键值为[net.Qtaguid_enabled],这个设置目前还没想到有什么作用。

Shell中对应的prop操作命令

在android的shell中也有对应的命令进行操作,有如下三个命令:

getprop [keyname] Keyname为需要获取的键值名,如果没有参数则打印全部的键值信息。 setprop [keyname] [value] Keyname为需要获取的键值名,value为设置的值,这个值为字符串。 watchprops 监听系统属性的变化,如果期间系统的属性发生变化则把变化的值显示出来。

在init.rc中也使用setprop来设置一些属性状态。

补充setprop:

Property模块的键值设置

Prop模块是保存少量的全局共享信息,其保存的数据具有信息量少,跨进程共享数据等特性;每一条信息包含两个属性,键名和键名对应的键值。“Ro.product.locale.language”表示本产品本地语言,表示该条信息的名字,“en”表示该条信息的取值为英文,这样任何一个应用程序就知道本机使用的语言情况。

Android终端属性prop操作的底层实现

在init.c文件中main函数中会调用start_property_service(),而它分别调用load_properties_from_file函数读取PROP_PATH_SYSTEM_BUILD(/system/build.prop)、PROP_PATH_SYSTEM_DEFAULT(/system/default.prop)和PROP_PATH_LOCAL_OVERRIDE(/data/local.prop)存放系统属性的文件并设置到系统属性。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


--结束END--

本文标题: Android中Property模块的键值设置

本文链接: https://www.lsjlt.com/news/21954.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Android项目中设置Property模块的键值
    这期内容当中小编将会给大家带来有关如何在Android项目中设置Property模块的键值,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Android中Property模块的键值设置Prop模块是保存少量...
    99+
    2023-05-31
    android property roi
  • Linux中如何配置键盘的设备模块
    这篇文章主要介绍Linux中如何配置键盘的设备模块,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!配置键盘1. 配置键盘的设备模块对于我们常见的键盘一般有三种类型,其一为老式的五针键盘,其二为ps/2键盘,其三是usb...
    99+
    2023-06-16
  • Android中怎么用seekbar设置进度值
    在Android中,可以使用SeekBar来设置进度值。SeekBar是一个拖动条,可以让用户通过拖动来选择一个数值。下面是使用Se...
    99+
    2023-10-23
    Android SeekBar
  • phpMyAdmin主键默认值的设置方法
    这篇文章给大家分享的是有关phpMyAdmin主键默认值的设置方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。phpmyadmin创建数据表时,主键的默认值设置如下,开始我们输...
    99+
    2024-04-02
  • [Android] [ROOT] Magisk(魔术师/面具) 设置以及必装模块的安装
    🍁简介 当我们给手机刷入Magisk(面具)后,等于获得了安卓系统的最高管理员权限,也就是root权限。获取root权限后的设备相对于未root的设备,安全性会有一定的降低。也许是基于这个原因,现在大部分应用都会检测你的...
    99+
    2023-08-19
    android
  • Android的启动模式怎么设置
    在Android中,可以通过在AndroidManifest.xml文件中设置元素的launchMode属性来定义启动模式。以下是常...
    99+
    2023-10-19
    Android
  • 怎么在DW中设置DIV模块页面居中
    这篇文章给大家介绍怎么在DW中设置DIV模块页面居中,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。先新建一个html文件,并在head中添加样式表【<style type="text/css"...
    99+
    2023-06-08
  • Discuz删除模块的设置方法详解
    Discuz删除模块的设置方法详解 在使用Discuz论坛系统时,有时候我们需要对一些模块进行定制化或者删除一些不需要的模块,以满足我们网站的特定需求。在Discuz中,删除模块并不是...
    99+
    2024-03-10
    方法详解 模块删除 discuz设置
  • VS Code:模块和 GOPATH 的使用和设置
    欢迎各位小伙伴来到编程网,相聚于此都是缘哈哈哈!今天我给大家带来《VS Code:模块和 GOPATH 的使用和设置》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学...
    99+
    2024-04-05
  • 如何在matplotlib中使用pyplot模块设置标题
    这期内容当中小编将会给大家带来有关如何在matplotlib中使用pyplot模块设置标题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用title()设置子图标题title()可同时在子图中显示中间、...
    99+
    2023-06-06
  • Node.js中的内置模块是什么
    本篇内容主要讲解“Node.js中的内置模块是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js中的内置模块是什么”吧!Node.js 架构图内置...
    99+
    2024-04-02
  • Node.js中的内置模块怎么用
    这篇“Node.js中的内置模块怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js中的内置模块怎么用”文章吧...
    99+
    2023-06-17
  • Android sqlite设置主键自增长的方法教程
    今天在APP中增加一个添加项目的功能,项目的主键为整数,要让它自增长。既然要自增长,那么在代码里面就不用给id字段赋值。但是调试的时候发现不行,提示主键重复,观察了输出,不赋值的话,id默认为0,于是每次都为0,就重复了:Source so...
    99+
    2023-05-31
    android sqlite 主键自增长
  • python中常用的内置模块汇总
    内置模块(一) Python内置的模块有很多,我们也已经接触了不少相关模块,接下来咱们就来做一些汇总和介绍。 内置模块有很多 & 模块中的功能也非常多,我们是没有办法注意全局...
    99+
    2024-04-02
  • 设置网页关键字的name属性值是什么
    这篇文章将为大家详细讲解有关设置网页关键字的name属性值是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 设置网页关键字的name属性值应该为什么? 设置网页关...
    99+
    2024-04-02
  • Node.js中的常见内置模块有哪些
    本篇内容主要讲解“Node.js中的常见内置模块有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js中的常见内置模块有哪些”吧!内置模块path路...
    99+
    2024-04-02
  • Golang中viper配置模块的应用方法
    这篇文章主要介绍“Golang中viper配置模块的应用方法”,在日常操作中,相信很多人在Golang中viper配置模块的应用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Golang中viper配置模...
    99+
    2023-06-20
  • Python3内置模块中base64的解码方法
    这篇文章给大家介绍Python3内置模块中base64的解码方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。即 base64 其实不能归属密码领域,作用也不是用于加密,它是一种编码算法,但是具有不可读性,所以可以说是...
    99+
    2023-06-02
  • Python使用apscheduler模块设置定时任务的实现
    目录一、安装二、ApScheduler 简介1 APScheduler的组件2 调度器的种类3 内置的触发器类型三、使用举例1 使用date类型的触发器2 使用interval类型的...
    99+
    2024-04-02
  • 云服务器cvm实例的计费模式是哪个模块设置的
    一、按量付费模式 按量付费模式是一种按照实例计算费用的计费模式,客户在租用云服务器cvm实例时,只需支付实际使用的云服务器资源数量。这种计费模式可以让客户更加灵活地控制成本,同时也可以提高客户对云服务器cvm实例的可用性和可扩展性的要求。...
    99+
    2023-10-27
    实例 模块 模式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作