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に書かれています
要求元のアプリケーションが、許可を宣言したアプリケーションと同じ証明書で署名されている場合にのみ、システムが付与する許可。証明書が一致する場合、システムは、ユーザーに通知したり、ユーザーの明示的な承認を求めたりすることなく、アクセス許可を自動的に付与します。
しかし、システム権限に関して、この条件を満たす方法がわかりません。