1

我正在 Android 6 模拟器下测试我的应用程序,我发现它开始崩溃并出现以下异常:

Caused by: java.lang.SecurityException: net.hubalek.android.xxx was not granted  this permission: android.permission.WRITE_SETTINGS.
        at android.os.Parcel.readException(Parcel.java:1599)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
        at android.content.ContentProviderProxy.call(ContentProviderNative.java:646)
        at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:1322)
        at android.provider.Settings$System.putStringForUser(Settings.java:1671)
        at android.provider.Settings$System.putIntForUser(Settings.java:1776)
        at android.provider.Settings$System.putInt(Settings.java:1770)
....

经过进一步研究,我发现根据http://developer.android.com/reference/android/Manifest.permission.html#WRITE_SETTINGS上的 javadoc它有protectionLevel="signature"

我猜在以前版本的 Android 中,保护程度较低(normal或者dangerous,我不记得了)。

我的问题是:有什么办法可以克服这种变化?在https://developer.android.com/reference/android/R.attr.html#protectionLevel写着

仅当请求应用程序使用与声明权限的应用程序相同的证书签名时,系统才会授予该权限。如果证书匹配,系统会自动授予权限,无需通知用户或请求用户明确批准。

但是在涉及系统权限时,我不明白如何满足这个条件。

4

0 回答 0