Android 6.0 WRITE_SETTINGS权限问题
来源:互联网 发布:谭铁牛 人工智能 编辑:程序博客网 时间:2024/05/19 17:10
最近写项目的时候遇到了这个问题,环信给出的demo里面的targetSdkVersion 是22,但是现在项目一般都需要适配6.0的了,所有在初始化互动云的时候 会报:
java.lang.SecurityException: com.nei.neiquan.huawuyuan was not granted either of these permissions: android.permission.CHANGE_NETWORK_STATE, android.permission.WRITE_SETTINGS.
查了一下资料得出这牵涉到Android 6.0的bug,android 6.0的 :
ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_SETTINGS) != PackageManager.PERMISSION_GRANTED) 不管设置里面有没有允许,这个方法的值都是false,所有这个权限是否有 不能根据这个方法来判断了,找了个替代方法Settings.System.canWrite(context),用这个方法能得到真实的数据,但是这个方法也有一定的局限性,就是得触发下才能有效,返回正确的数据,不然一直是false,就是不管手机系统WRITE_SETTINGS这个权限是否允许,都得按下,如果是允许的,得先按下取消再先允许才能触发onActivityResult,这个里面的Settings.System.canWrite(WelcomeActivity.this)能返回true。所以,我存一个数据在数据库,当进入到主界面的时候就修改这个值,就代表该App已经有这个权限,下次杀死进程进来直接初始化。
在onActivityResult里面判断然后初始化环信 ,具体代码如下:
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("tag", "requestCode==" + requestCode + "resultCode==" + resultCode);
if (requestCode == REQUEST_CODE_WRITE_SETTINGS) {
if (Settings.System.canWrite(WelcomeActivity.this)) {
MyApplication.spUtil.put(UserConstant.ISFIRST2APPpp, "3");
DemoHelper.getInstance().init(this);
settingContent();
}
}
}
问题部分解决,特意记录下,共勉。
java.lang.SecurityException: com.nei.neiquan.huawuyuan was not granted either of these permissions: android.permission.CHANGE_NETWORK_STATE, android.permission.WRITE_SETTINGS.
查了一下资料得出这牵涉到Android 6.0的bug,android 6.0的 :
ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_SETTINGS) != PackageManager.PERMISSION_GRANTED) 不管设置里面有没有允许,这个方法的值都是false,所有这个权限是否有 不能根据这个方法来判断了,找了个替代方法Settings.System.canWrite(context),用这个方法能得到真实的数据,但是这个方法也有一定的局限性,就是得触发下才能有效,返回正确的数据,不然一直是false,就是不管手机系统WRITE_SETTINGS这个权限是否允许,都得按下,如果是允许的,得先按下取消再先允许才能触发onActivityResult,这个里面的Settings.System.canWrite(WelcomeActivity.this)能返回true。所以,我存一个数据在数据库,当进入到主界面的时候就修改这个值,就代表该App已经有这个权限,下次杀死进程进来直接初始化。
在onActivityResult里面判断然后初始化环信 ,具体代码如下:
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("tag", "requestCode==" + requestCode + "resultCode==" + resultCode);
if (requestCode == REQUEST_CODE_WRITE_SETTINGS) {
if (Settings.System.canWrite(WelcomeActivity.this)) {
MyApplication.spUtil.put(UserConstant.ISFIRST2APPpp, "3");
DemoHelper.getInstance().init(this);
settingContent();
}
}
}
问题部分解决,特意记录下,共勉。
阅读全文
0 0
- Android 6.0 WRITE_SETTINGS权限问题
- android 6.0 write_settings 权限
- 安卓6.0系统权限问题android.permission.WRITE_SETTINGS
- 安卓6.0系统权限问题android.permission.WRITE_SETTINGS
- android 特殊权限SYSTEM_ALERT_WINDOW,WRITE_SETTINGS
- 安卓6.0系统权限申请android.permission.WRITE_SETTINGS
- 安卓6.0系统权限申请android.permission.WRITE_SETTINGS
- Android M WRITE_SETTINGS权限的一个BUG
- 安卓6.0 WRITE_SETTINGS权限申请
- Android M一一WRITE_SETTINGS权限的一个BUG
- Andrid6.0申请SYSTEM_ALERT_WINDOW和WRITE_SETTINGS权限
- android 6.0权限问题
- Android 6.0 权限问题
- Android 6.0权限问题
- Android 6.0权限问题
- Android 6.0权限问题
- Android 6.0权限问题
- android 6.0 权限问题
- 就这样一不小心,Python就火了
- promise基础
- 三种 mongodb 的驱动库的对比
- xml学习笔记②PHP DOM--对xml文件进行更新操作
- HttpClient 4.3连接池参数配置及源码解读
- Android 6.0 WRITE_SETTINGS权限问题
- 跟随手指移动的小球
- 15. 3Sum
- 2017-12-14 乱入一道C++类的学习的题(静态数据成员初始化)
- KeyStore 和 TrustStore
- 20171214Link
- 高仿微信-微信EM开发流程--(3)Android6.0动态权限申请
- 考取Atlassian产品的专业认证书-Atlassian Certified JIRA Administrator (ACP-100)
- 登录时的眼睛