我正在建立我的应用程序的
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,无论设置的值如何.