作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的代码中我有:
Settings.System.putInt(this.getContentResolver(), "vibrate_when_ringing", isVibrateWhenRinging ? 1 :0);
使用以下权限:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
这从 Jelly Bean (API 16) 到 Lollipop (API 22) 都运行良好。
在 Android M 中,我知道要使用该权限,我需要提示用户 Settings.ACTION_MANAGE_WRITE_SETTINGS .
但是,即使启用了该权限,我仍会看到以下错误:
E/AndroidRuntime: java.lang.IllegalArgumentException: You cannot change private secure settings.
E/AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:165)
E/AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
E/AndroidRuntime: at android.content.ContentProviderProxy.call(ContentProviderNative.java:646)
嗯...我错过了什么吗?通过适当的权限,我们可以更改铃声、请勿打扰模式等。但看起来在 Android M 中,我们将无法更改诸如“响铃时振动”之类的常规设置。我希望我是错的。
最佳答案
您应该调用 Settings.System.canWrite() 以查看是否可以写入此设置。
如果函数返回 false,则用户可以同意允许您的应用写入设置:
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + getApplicationContext().getPackageName()));
startActivity(intent);
关于android - Android Marshmallow (6.0) 上的 vibrate_when_ringing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33138280/
在我的代码中我有: Settings.System.putInt(this.getContentResolver(), "vibrate_when_ringing", isVibrateWhenRin
我是一名优秀的程序员,十分优秀!