今天想在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
分享到:
相关推荐
使用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″ 解决方法 就是去掉 ...
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 API 23 (Android M)开始,MediaPlayer支持调整播放速度。 使用的方法是setPlaybackParams,传入一个代表播放属性的类PlaybackParams。 本文介绍如何使用MediaPlayer调整播放速度。 MediaPlayer....
属性也可以在代码中设置 val submitButton:SubmitButton = findViewById(R.id.submitbutton) submitButton.submitText = "开始上传" submitButton.completeText = "上传完成" submitButton.failureText = "上传...
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....
要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹 下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方 便。对比较特殊的界面也可以...
项目中经常会用到加载数据的loading显示图,除了设计根据app自身设计的动画loading,一般用的比较多的是仿照ios 的菊花加载loading 图,当然一些条件下还会涉及到加载成功/ 失败情况的显示,还有显示文字。...
在run过程中,as会对apk使用debug签名来进行签名,所以我们直接在设备上安装失败的原因并不是签名问题,而是通过as run后,as会在apk的AndroidManifest文件中自动添加android:testOnly属性。正是由于这个属性导致...
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 ...
演示图 Note:图1为设置属性wkp_canScrollToEndViewTop=true,图2没有;图3为设置滑动改变监听。Gradle集成dependencies{ compile 'com.wkp:StickLayout:1.0.6' //Android Studio3.0 可用以下方式 //...
前言:在android HTML5 开发中有不少人遇到过 audio 标签 autoplay在某些设备上无效的问题,网上大多是讲怎么在js中操作,即在特定的时刻调用audio的play()方法,在android上还是无效。...// 设置4.2以