Android手动检查并申请权限方法
Android权限一般是在AndroidManifest.xml中声明,在安装或首次使用的时候系统会自动提示用户是否提供权限
Android官方文档:
Then,whentheapplicationisinstalledonthedevice,theinstallerdetermineswhetherornottogranttherequestedpermissionbycheckingtheauthoritiesthatsignedtheapplication'scertificatesand,insomecases,askingtheuser.Ifthepermissionisgranted,theapplicationisabletousetheprotectedfeatures.Ifnot,itsattemptstoaccessthosefeatureswillsimplyfailwithoutanynotificationtotheuser.
但有时候因为手机设备等原因,并没有在一开始就弹出提示框让用户确认是否提供权限,对于有些权限,不确认的话就不提供权限,因此,有些功能就无法实现。
这时候需要我们手动检查是否已经拥有权限,没有的话就调用代码提示用户提供权限。
如何手动检查并申请权限
如:在写入之前检查是否有WRITE_EXTERNAL_STORAGE权限,没有则申请权限
代码:
if(ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) !=PackageManager.PERMISSION_GRANTED){ //申请WRITE_EXTERNAL_STORAGE权限 ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_REQUEST_CODE); }
请求权限后,系统会弹出请求权限的Dialog,允许即可
用户选择允许或拒绝后,会回调onRequestPermissionsResult方法,该方法类似于onActivityResult
@Override publicvoidonRequestPermissionsResult(intrequestCode,String[]permissions,int[]grantResults){ super.onRequestPermissionsResult(requestCode,permissions,grantResults); doNext(requestCode,grantResults); }
PS:
在Android6.0,有些权限只需要在AndroidManifest.xml文件中声明即可,但有些除了声明以外,还需要在运行时判断,即用户确认,需要确认的权限如下:
身体传感器 日历 摄像头 通讯录 地理位置 麦克风 电话 短信 存储空间
Android6.0系统默认为targetSdkVersion小于23的应用默认授予了所申请的所有权限,
所以如果你以前的APP设置的targetSdkVersion低于23,在运行时也不会崩溃,
但这也只是一个临时的救急策略,用户还是可以在设置中取消授予的权限。
以下权限只需要在AndroidManifest.xml中声明即可使用:
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS android.permission.ACCESS_NETWORK_STATE android.permission.ACCESS_NOTIFICATION_POLICY android.permission.ACCESS_WIFI_STATE android.permission.ACCESS_WIMAX_STATE android.permission.BLUETOOTH android.permission.BLUETOOTH_ADMIN android.permission.BROADCAST_STICKY android.permission.CHANGE_NETWORK_STATE android.permission.CHANGE_WIFI_MULTICAST_STATE android.permission.CHANGE_WIFI_STATE android.permission.CHANGE_WIMAX_STATE android.permission.DISABLE_KEYGUARD android.permission.EXPAND_STATUS_BAR android.permission.FLASHLIGHT android.permission.GET_ACCOUNTS android.permission.GET_PACKAGE_SIZE android.permission.INTERNET android.permission.KILL_BACKGROUND_PROCESSES android.permission.MODIFY_AUDIO_SETTINGS android.permission.NFC android.permission.READ_SYNC_SETTINGS android.permission.READ_SYNC_STATS android.permission.RECEIVE_BOOT_COMPLETED android.permission.REORDER_TASKS android.permission.REQUEST_INSTALL_PACKAGES android.permission.SET_TIME_ZONE android.permission.SET_WALLPAPER android.permission.SET_WALLPAPER_HINTS android.permission.SUBSCRIBED_FEEDS_READ android.permission.TRANSMIT_IR android.permission.USE_FINGERPRINT android.permission.VIBRATE android.permission.WAKE_LOCK android.permission.WRITE_SYNC_SETTINGS com.android.alarm.permission.SET_ALARM com.android.launcher.permission.INSTALL_SHORTCUT com.android.launcher.permission.UNINSTALL_SHORTCUT
以上这篇Android手动检查并申请权限方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。