当我在 Android M Preview 3 上的目标 API 为 23 时,我似乎无法获得 Manifest.permission.WRITE_SETTTINGS 权限。
requestPermissions(new String[]{Manifest.permission.WRITE_SETTINGS}, 101);
请求权限不会弹出我期望的对话框,但是如果我在没有此权限的情况下进行以下调用,
RingtoneManager.setActualDefaultRingtoneUri(activity, RingtoneManager.TYPE_RINGTONE, ringUri);
除非我没有权限,否则电话会。
我不知道从这里去哪里。 23 有新的铃声 API 吗?还是这种权限更改只是使任何非系统应用程序无法更改铃声?
原文由 Justin 发布,翻译遵循 CC BY-SA 4.0 许可协议
要使用
WRITE_SETTINGS
,基于文档:清单中的
<uses-permission>
元素正常。调用
Settings.System.canWrite()
看看你是否有资格写出设置。如果
canWrite()
返回false
,请启动ACTION_MANAGE_WRITE_SETTINGS
活动,以便用户可以在那里同意允许您的应用程序实际写入设置。换句话说,写入设置现在是双重选择(同意安装,在设置中单独同意以允许),类似于设备管理 API、可访问性服务等。
另请注意,我还没有尝试使用这些 - 这是基于 我昨天对 Android 6.0 更改所做的研究。