Android - failed to set system property

 记录一次疏忽,起因是我需要在自定义的 receiver 中保存 property 方便,方便在三方 app 中使用,结果直接崩溃了,虽然结果保存成功了,但是这种情况也是无法接收的,错误日志如下:

M006082  05-25 17:03:16.339  1322  1322 W libc    : Unable to set property "ro.flyscale.cdmaImsi" to "4600**********": error code: 0xb
M006083  05-25 17:03:16.340  1322  1322 D AndroidRuntime: Shutting down VM
--------- beginning of crash
C006084  05-25 17:03:16.341  1322  1322 E AndroidRuntime: FATAL EXCEPTION: main
C006084  05-25 17:03:16.341  1322  1322 E AndroidRuntime: Process: com.android.settings, PID: 1322
C006084  05-25 17:03:16.341  1322  1322 E AndroidRuntime: java.lang.RuntimeException: Unable to start receiver com.android.settings.SimStateReceiver: java.lang.RuntimeException: failed to set system property
C006084  05-25 17:03:16.341  1322  1322 E AndroidRuntime:     at android.app.ActivityThread.handleReceiver(ActivityThread.java:3869)
C006084  05-25 17:03:16.341  1322  1322 E AndroidRuntime:     at android.app.ActivityThread.access$1400(ActivityThread.java:234)
C006084  05-25 17:03:16.341  1322  1322 E AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1893)
C006084  05-25 17:03:16.341  1322  1322 E AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:107)
C006084  05-25 17:03:16.341  1322  1322 E AndroidRuntime:     at android.os.Looper.loop(Looper.java:214)
C006084  05-25 17:03:16.341  1322  1322 E AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:7626)
C006084  05-25 17:03:16.341  1322  1322 E AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
C006084  05-25 17:03:16

我们知道关于 property 可以先通过 adb 命令来写入或者读取,于是再次尝试

 ​​

发现确实不好使,然后意识到这个 ro开头的貌似是只读属性的,去网上确认了下,确实如此。

特别属性 :

  如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。

  如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。

  如果属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名。

    (这是很巧妙的。 netresolve模块的使用这个属性来追踪在net.*属性上的任何变化。)

  属性“ ctrl.start ”和“ ctrl.stop ”是用来启动和停止服务。每一项服务必须在/init.rc中定义.系统启动时,与init守护

    进程将解析init.rc和启动属性服务。一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该属性值作为服务

    名找到该服务,启动该服务。这项服务的启动结果将会放入“ init.svc.<服务名>“属性中。客户端应用程序可以轮询那个属性值,以确定结果。 

这边文章https://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html 

  • 24
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值