Android应用申请运行时权限(Permission)示例

从Android 6.0开始,应用在安装时不再自动获取所有权限,而是采用运行时权限管理模式。当应用需要特定权限执行某功能时,系统会弹出对话框请求用户授权。本文介绍了如何检查和申请权限,以及处理用户许可的回调方法。此外,还讨论了用户拒绝权限后的处理策略,包括如何判断用户是否选择了"不再询问"并提示用户重新开启权限。
摘要由CSDN通过智能技术生成

一直以来,为了保证最大的安全性,安装Android应用时,系统总是让用户选择是否同意该应用所需的所有权限。

一旦安装应用,就意味着该应用所需的所有权限均已获得。
若在使用某个功能时用到了某个权限,系统将不会提醒用户该权限正在被获取(比如微信需要使用摄像头拍照,
在Android 6.0以前的设备上,用户将不会被系统告知正在使用“使用系统摄像头”的权限)。

这在安全性上是个隐患:在不经用户同意的情况下,一些应用在后台可以自由地收集用户隐私信息而不被用户察觉。


为了解决这个问题,从Android 6.0版本开始,在安装应用时,该应用无法取得任何权限。
相反,在使用应用的过程中,若某个功能需要获取某个权限,系统会弹出一个对话框,显式地由用户决定是否将该权限赋予应用。
只有得到了用户的许可,该功能才可以被使用。

需要注意的是,赋予权限的对话框并不会自动弹出,而需要由开发者手动调用。
若程序调用的某个方法需要用户赋予相应权限,而此时该权限并未被赋予时,那么程序就会抛出异常并崩溃。
除此之外,用户还可以在任何时候,通过设置中的应用管理撤销赋予过的权限。

应用的targetSDKVersion < 23时,权限检查仍是早期的形式(仅在安装时赋予权限,使用时将不被提醒);
应用的targetSDKVersion ≥ 23时,则将使用新的运行时权限规则。


以下罗列了在安装应用时,自动赋予应用的权限,这些权限无法在安装后手动撤销,我们称其为基本权限(Normal Permission)。
开发者仅需要在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值