在Android 中,如果要使用系统限制的权限(android.permission.WRITE_SECURE_SETTINGS),我们需要把程序安装到/system/app/下
比如,我写了一个APK ,其中的主Activity中用到以下代码:
1 2 3 4 5 |
ContentResolver resolver = context.getContentResolver(); // 获得gps当前的状态,若为true表示打开,false 为关闭 boolean assisted_gps_enabled = Settings.Secure.isLocationProviderEnabled(resolver, LocationManager.GPS_PROVIDER); // 如果关闭,则打开 if(!assisted_gps_enabled) |
然后在AndroidManifest.xml 中声明权限
<uses-permission android:name=”android.permission.WRITE_SECURE_SETTINGS” />
这时,无论通过adb push 还是adb install 或者是之间修改mk文件将apk集成进系统(当然指定到/data/app下),运行apk是总会报
java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS
这个错误
这是因为android.permission.WRITE_SECURE_SETTINGS是系统限制的权限。所以apk需要是系统的apk (/system/app下才可以)。可以把apk 通过adb push “你的apk” system/app 或者修改mk文件将其编入system镜像
出了上面这样把apk装到system/app下外,本人还发现可以设置android:sharedUserId=”android.uid.system” ,将apk安装的data/app下也是可行的,貌似是,有点忘了。
0 条评论