android中的运行时权限
前言:随着android 6.0的普及,android 6.0的新特性逐渐被大家所重视。其中权限模式的变化更加引起了开发人员的注意,那么就让我们一起来看看android中的运行时权限吧。
为什么要引入运行时权限:
在android 6.0以前,权限的授予很简单,只需要在android的清单文件(AndroidManifest.xml)中直接声明即可。系统会默认用户接受此项权限,对于开发人员而言,权限的赋予是透明的,但对于用户而言,却是不明确的。用户在安装某一个APP的时候可能会被APP恶意窃取用户的隐私信息,比如通讯录信息,短信信息等等。这种权限的开发性对于用户而言及其不友好,因此,在android 6.0的时候,新增了运行时权限。
什么是运行时权限:
顾名思义就是在运行的时候赋予权限,即用户可直接在运行时管理应用权限。这种模式给了用户极大的可控性,很好的维护了用户的隐私。用户可以为安装的应用手动分别授予或撤销权限。
运行时权限的使用:运行时权限使用起来非常简单,首先app的API级别必须达到23及其以上,否则就不存在运行时权限一说。当APP的API级别在23及其以上的时候,务必在运行时检查和请求权限。具体步骤如下:
(1) 检查要使用到的权限是否已经被授予。------调用新增的checkSelfPermission()方法。
(2)请求权限。-------调用新增的requestPermissions()方法
(3)再次请求权限。-------弹出Dialog对话框。
(4)通过请求码来检查权限是否授予成功。
可能有的童靴就要问了,既然android 6.0加入的运行时权限,那么是不是所有的权限都需要进行检查一遍呢?那样的话会不会很麻烦,比如像一些很基本的权限完全没有必要进行检查的呀!哈哈哈,童靴的担心并不是没有道理,因为在实际的开发过程中,确实很多权限是必须的而且不会涉及到用户的隐私问题,如果连这一类权限都要去检查的话,会显得很不友好。所以针对这个问题,google开发团队将一些常见的权限分为两种为Normal Permission和Dangerous Permission.。
权限之一:Normal Permission
Normal Permission即普通权限,使用这类权限非常简单,只需要在android的androidMainfest.xml文件里面直接注册就行。那么有哪些权限是属于Normal Permission呢?下面我将列举一些我们常见的权限:
ACCESS_LOCATION_EXTRA_COMMANDS
ACCESS_NETWORK_STATE
ACCESS_NOTIFICATION_POLICY
ACCESS_WIFI_STATE
BLUETOOTH
BLUETOOTH_ADMIN
BROADCAST_STICKY
CHANGE_NETWORK_STATE
CHANGE_WIFI_MULTICAST_STATE
CHANGE_WIFI_STATE
DISABLE_KEYGUARD
EXPAND_STATUS_BAR
GET_PACKAGE_SIZE
INSTALL_SHORTCUT
INTERNET
KILL_BACKGROUND_PROCESSES
MODIFY_AUDIO_SETTINGS
NFC
READ_SYNC_SETTINGS
READ_SYNC_STATS
RECEIVE_BOOT_COMPLETED
REORDER_TASKS
REQUEST_INSTALL_PACKAGES
SET_ALARM
SET_TIME_ZONE
SET_WALLPAPER
SET_WALLPAPER_HINTS
TRANSMIT_IR
UNINSTALL_SHORTCUT
USE_FINGERPRINT
VIBRATE
WAKE_LOCK
WRITE_SYNC_SETTINGS
权限之二:Dangerous Permission
Dangerous Permission即危险权限,注意这里所指的危险是指在没有用户允许的情况下被授予而导致的用户隐私不安全的情况。简而言之,在使用这类权限的时候我们必须对这些权限做一个授予的过程,由用户手动去设置。那么这类权限都有哪些呢?
group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS
group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL
group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR
group:android.permission-group.CAMERA
permission:android.permission.CAMERA
group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS
group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO
group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
细心的朋友已经发现了,这类权限是以group形式出现的。对的,这类权限就是以group形式出现的,在以后的开发过程中大家就会有体会了。好了,本篇博客到这里就要结束了,下篇我会教大家如何使用,欢迎大家在下面留言讨论。