今天想在system server进程下设置一个属性,ro.media.mine,发现没有设置成功。
后来查了下,原来设置属性之前,会做一个权限判断,判断依据就是一段一段的前缀。
判断用的结构体如下:
struct {
const char * prefix;
unsigned int uid;
} property_perms[] = {
{ " net.rmnet0. " , AID_RADIO },
{ " net.gprs. " , AID_RADIO },
{ " ril. " , AID_RADIO },
{ " gsm. " , AID_RADIO },
{ " net.dns " , AID_RADIO },
{ " net.usb0 " , AID_RADIO },
{ " net. " , AID_SYSTEM },
{ " dev. " , AID_SYSTEM },
{ " runtime. " , AID_SYSTEM },
{ " hw. " , AID_SYSTEM },
{ " sys. " , AID_SYSTEM },
{ " service. " , AID_SYSTEM },
{ " wlan. " , AID_SYSTEM },
{ " dhcp. " , AID_SYSTEM },
{ " dhcp. " , AID_DHCP },
{ " debug. " , AID_SHELL },
{ " log. " , AID_SHELL },
{ " service.adb.root " , AID_SHELL },
{ " persist.sys. " , AID_SYSTEM },
{ " persist.service. " , AID_SYSTEM },
{ " media. " , AID_MEDIA },
{ NULL, 0 }
};
从上述结构体可知,有media前缀的属性,只能被AID_MEDIA修改,而不能被AID_SYSTEM修改。
既然是想着system server中修改属性,只有改变属性的名称了。
将属性名称改为ro.sys.setroute,果然OK了。
参考了:http://carywei.iteye.com/blog/889482
分享到:
相关推荐
开头的属性只能设置一次,否则将返回失败。如果成功设置了属性,系统将调用__system_property_update函数来更新系统属性。 __system_property_update函数 __system_property_update函数位于bionic/libc/bionic/...
使用SQLite时,继承SQLiteOpenHelper, onCreate方法只有在第一次创建数据库的时候才会被调用, 因此,重新更改或者添加表时,需要在DDMS里面删掉原来的.db文件,重新运行,就可以~...属性名就会变成**“KEY_IDInteger
使用TextView的autoLink属性设置超链接,用工具类方式和自定义View方式两种方式修改超链接显示样式和链接地址的点击事件。
Note:图1为设置属性wkp_canScrollToEndViewTop=true,图2没有;图3为设置滑动改变监听。 Gradle集成 dependencies{ compile 'com.wkp:StickLayout:1.0.6' //Android Studio3.0 可用以下方式 //implementation '...
//Android Studio3.0 可用以下方式 //implementation 'com.wkp:SoftLinearLayout:1.0.3' } //如集成失败或不愿意等待,请加上我的maven仓库地址 maven { url "https://dl.bintray.com/wkp/maven" } Note:可能...
通常我们需要设置Android:imeOptions属性。Android:imeOptions的值有actionGo、 actionSend 、actionSearch、actionDone等 但是今天我发现设置了无效 那是因为我设置了 android:maxLines=”1″ 解决方法 就是去掉 ...
Android 系统编译过程中常见问题汇总 Android 系统编译过程中常见问题汇总是指在编译 ...编译 Android 系统时可能遇到各种问题,导致编译失败。解决这些问题需要安装正确的软件包,配置环境变量,编辑配置文件等。
RadarView for Android 是一个雷达扫描动画后,然后展示得分效果的控件。 Gif 展示 引入 Maven: com.king.view radarview 1.0.2 pom Gradle: compile 'com.king.view:radarview:1.0.2' Lvy: 如果Gradle...
要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹 下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方 便。对比较特殊的界面也可以...
从Android API 23 (Android M)开始,MediaPlayer支持调整播放速度。 使用的方法是setPlaybackParams,传入一个代表播放属性的类PlaybackParams。 本文介绍如何使用MediaPlayer调整播放速度。 MediaPlayer....
属性也可以在代码中设置 val submitButton:SubmitButton = findViewById(R.id.submitbutton) submitButton.submitText = "开始上传" submitButton.completeText = "上传完成" submitButton.failureText = "上传...
* 对于 XP 和 Vista 用户,如果驱动程序安装失败,可以右击我的电脑,属性 -> 设备管理器,找到 USB 接口,选择卸载插了手机的 USB 口,然后把手机拔出电脑后重新插入,继续上述步骤的第 6 步做就可以。 本教程讲述...
3. 通过progressLayout.showContent()来打开loading,或者你也可以使用属性:app:progress="true"mHandler.postDelayed(new Runnable() { @Override public void run() { //progressLayout.showContent...
代码比较简单,但是步骤结合博客还是很详细的,可以看我的博客http://blog.csdn.net/superbiglw/article/details/53156177
Activity 生命周期的集成: 当Activity暂停和重启时,Glide能够做到智能的暂停和重新开始请求,并且当Android设备的连接状态变化时,所有失败的请求能够自动重新请求 转码的支持: Glide的toBytes() 和transcode() ...
要设置属性,请参阅 运行测试 设备设置 确保在运行测试的设备(不是仿真器)上关闭了所有动画。 还要确保在设备上启用了位置访问。 在推动代码运行之前- ./gradlew localBuild 这是默认任务,因此您也可以运行...
如果你 repo sync 了 android 的整个源码,那么可以直接把你的 app 放到 /packages/apps 下面去 mm ,不过要记得在 Android.mk 中增加 LOCAL_CERTIFICATE 属性,这个属性具体有三个值: 系统中所有使用 android.uid....
项目中经常会用到加载数据的loading显示图,除了设计根据app自身设计的动画loading,一般用的比较多的是仿照ios 的菊花加载loading 图,当然一些条件下还会涉及到加载成功/ 失败情况的显示,还有显示文字。...
AS的Gradle插件默认会启用Manifest Merger Tool,若Library项目中也定义了与主项目相同的属性(例如默认生成的android:icon和android:theme),则此时会合并失败,并报上面的错误。 解决方法有以下2种: 方法1:在...
下载失败解决方法,在android sdk manager 界面tools菜单 ->options 窗口,进行如下设置: http proxy server :mirrors.opencas.cn; http proxy port :80; 选项框选中 force ...