【发布时间】:2016-07-03 13:48:05
【问题描述】:
在我正在工作的项目中,我们有一组权限,其中 3 个被标记为dangerous。在Android
所以,在谷歌搜索权限,我到达了谷歌文档页面,在那里讨论如何请求它:http://developer.android.com/intl/es/training/permissions/requesting.html
他们使用这个代码。
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) { ... }
ContextCompat.CheckSelfPermission(..) 仅在 API 23 中。
但问题在于,对于项目中的某些规范(老板等),我们无法升级到 API 23,以使用包含此方法的库兼容。
所以我的问题是:
有什么方法可以处理权限的请求,做一些变通?
权限:
<uses-permission android:name="xx.xx.otr.app.providers.imps.permission.READ_ONLY" />
<uses-permission android:name="xx.xx.otr.app.providers.imps.permission.WRITE_ONLY" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="es.in2.otr.app.im.permission.IM_SERVICE" />
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="xx.xx.otr.app.im.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="xx.xx.otr.app.im.permission.C2D_MESSAGE" />
<permission
android:name="xx.xx.otr.app.im.permission.IM_SERVICE"
android:description="@string/perm_desc"
android:label="@string/perm_label"
android:permissionGroup="android.permission-group.MESSAGES"
android:protectionLevel="dangerous" />
<permission
android:name="xx.xx.otr.app.providers.imps.permission.READ_ONLY"
android:description="@string/ro_perm_desc"
android:label="@string/ro_perm_label"
android:permissionGroup="android.permission-group.MESSAGES"
android:protectionLevel="dangerous" />
<permission
android:name="xx.xx.otr.app.providers.imps.permission.WRITE_ONLY"
android:description="@string/wo_perm_desc"
android:label="@string/wo_perm_label"
android:permissionGroup="android.permission-group.MESSAGES"
android:protectionLevel="dangerous" />
【问题讨论】:
-
设置 targetSdkVersion 22 并且不要询问运行时权限然后检查它会很好。其他你可以检查android的版本并相应地请求权限。我找到了一个在运行时请求权限的漂亮教程。阅读它你会知道该怎么做coderzpassion.com/android-new-runtime-permissions
标签: android android-permissions android-6.0-marshmallow