android – WRITE_SETTINGS权限模糊

我正在建立我的应用程序的 Android 6.0 Marshmallow,它需要WRITE_SETTTINGS权限.搜索 from here后,我来到这个叫做:
requestPermissions(new String[]{Manifest.permission.WRITE_SETTINGS},101);

不会显示对话权限.所以,根据CommonsWare解决方案,我们应该检查Settings.System.canWrite()
返回true或false.所以我应该用ACTION_MANAGE_WRITE_SETTINGS作为动作来调用Activity.

但问题是当我调用这个活动时,它显示我的应用程序已被授予权限,但是Settings.System.canWrite()返回false.

在这里缺少一些东西,或者我必须禁用它,然后再启用它.

解决方法

在我的Nexus 6使用Android 6.0.1(MMB29S)这段代码
if (!android.provider.Settings.System.canWrite(this)) {
    Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
    intent.setData(Uri.parse("package:dummy"));
    startActivity(intent);
}

仅当允许修改系统设置设置为禁用时才打开设置.例如,首次启动后,新安装(即不重新安装)

编辑(见注释):某些设备可能会在该代码中被检测出来,那些canWrite()总是返回false,无论设置的值如何.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...