java.lang.SecurityException: No permission to write APN settings问题的定位小结

在实际开发过程中,某模块访问TelephonyProvider时,问题报下面的异常,而且报的频率还挺高,今天特别抽空找了一下。

01-11 19:23:49.301: E/DatabaseUtils(902): Writing exception to parcel
01-11 19:23:49.301: E/DatabaseUtils(902): java.lang.SecurityException: No permission to write APN settings: Neither user 10017 nor current process has android.permission.WRITE_APN_SETTINGS.
01-11 19:23:49.301: E/DatabaseUtils(902): 	at android.app.ContextImpl.enforce(ContextImpl.java:1646)
01-11 19:23:49.301: E/DatabaseUtils(902): 	at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1675)
01-11 19:23:49.301: E/DatabaseUtils(902): 	at com.android.providers.telephony.TelephonyProvider.checkPermission(TelephonyProvider.java:784)
01-11 19:23:49.301: E/DatabaseUtils(902): 	at com.android.providers.telephony.TelephonyProvider.query(TelephonyProvider.java:511)
01-11 19:23:49.301: E/DatabaseUtils(902): 	at android.content.ContentProvider.query(ContentProvider.java:744)
01-11 19:23:49.301: E/DatabaseUtils(902): 	at android.content.ContentProvider$Transport.query(ContentProvider.java:199)
01-11 19:23:49.301: E/DatabaseUtils(902): 	at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:114)
01-11 19:23:49.301: E/DatabaseUtils(902): 	at android.os.Binder.execTransact(Binder.java:388)
01-11 19:23:49.301: E/DatabaseUtils(902): 	at dalvik.system.NativeStart.run(Native Method)

根据“user 10017”这个关键字,比较靠谱,使用如下命令:

在CMD中输入 adb shell,然后再 su 到root,再输入下面的命令:

cat /data/system/packages.xml  | grep 10017

得到如下的结果:

    <package name="com.zhao3546.testcenter" codePath="/system/app/testcenter.apk" nativeLibraryPath="/data/app-lib/testcenter_1.0.15" flags="573007" ft="14380ce7678" it="143321d14ab" ut="14380d07834" version="200101" userId="10017">

找到了模块,解决就比较简单了,直接给该模块加一下“android.permission.WRITE_APN_SETTINGS”的权限即可。





  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值