Android基础之运行时权限

http://blog.csdn.net/lmj623565791/article/details/50709663
http://blog.csdn.net/u010661782/article/details/52549307

什么情况下会检查权限(code中调用哪些方法,哪些接口):

对于6.0以下的权限及在安装的时候,根据权限声明产生一个权限列表,用户只有在同意之后才能完成app的安装,造成了我们想要使用某个app,就要默默忍受其一些不必要的权限(比如是个app都要访问通讯录、短信等)。而在6.0以后,我们可以直接安装,当app需要我们授予不恰当的权限的时候,我们可以予以拒绝(比如:单机的象棋对战,请求访问任何权限,我都是不同意的)。当然你也可以在设置界面对每个app的权限进行查看,以及对单个权限进行授权或者解除授权。

新的权限机制更好的保护了用户的隐私,Google将权限分为两类,一类是Normal Permissions,这类权限一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动、访问网络等;另一类是Dangerous Permission,一般是涉及到用户隐私的,需要用户进行授权,比如读取sdcard、访问通讯录等。

关于Manifest,Setting权限管理列表,安装时权限列表,代码中的权限检查和申请(运行时权限)的理解总结:
Android6.0之后使用运行时权限机制,对权限做了划分:1普通权限 2危险权限(9组25个,每组授权一个即默认该组都授权)

1,普通权限在Manifest中注册后,系统默认即会授权。

2,危险权限在Manifest中注册后,默认不会授权,当运行程序到需要使用该权限时,需要在code中做权限检查和申请的处理,主要使用ContextCompat.checkSelfPermission()
,ActivityCompat.requestPermission()以及onRequestPermissionsResult。这里就有个疑问,既然危险权限在Manifst中注册了也不会授权,还是要在code里申请,那还
注册干嘛?我的理解是用于Setting下面权限使用情况的显示和管理,让用户可以随时看见该APP使用到哪些权限,同时可以手动在这里开关。而如果只在code里申请某权限,
用户在某次运行时授予了该权限,之后用户想关闭该权限却会发现没有入口(因为Manifest下未注册该权限,Setting下不会列出该权限)。

3, Manifest是注册申请权限,注册了不代表就已经被授权。
在6.0以前,当安装应用时,系统会扫描应用的Manifest,生成对应的权限列表对话框,需要用户确认授权后才能安装,如果拒绝则不能安装。
在6.0以后,安装应用时不会弹出权限列表对话框,而是直接安装。

4,Setting里某APP的权限管理列表所显示的权限基于该APP的Manifest。

Dangerous Permissions:
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 基础知识包括以下内容: 1. Android 是什么? Android 是一个开源的操作系统,主要用于移动设备,例如智能手机和平板电脑。它由 Google 公司开发并维护,基于 Linux 内核,并提供了丰富的应用程序框架。 2. Android 应用程序的结构 Android 应用程序由四个主要组件构成:活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供程序(Content Provider)。这些组件可以协同工作来创建丰富的用户体验。 3. Android 应用程序的开发语言 Android 应用程序可以使用 Java、Kotlin 或 C++ 进行开发。Java 是最常用的开发语言,但 Kotlin 正在逐渐流行起来。 4. Android 开发工具 Android 开发工具包(Android SDK)是 Android 开发所需的一套工具和库。其中包括 Android Studio(集成开发环境)、Android 调试桥(ADB)、模拟器和设备驱动程序等。 5. Android 布局和用户界面 Android 使用 XML 文件来定义应用程序的布局和用户界面。开发者可以使用一系列的布局容器和视图控件来创建灵活的界面。 6. Android 数据存储 Android 提供了多种数据存储选项,包括 Shared Preferences(用于存储简单的键值对)、文件存储、SQLite 数据库和网络存储(如使用 Retrofit 进行网络请求)。 7. Android 权限管理 Android 应用程序需要获取用户权限才能访问特定功能或数据。开发者需要在应用程序清单文件中声明所需的权限,并在运行时进行权限请求和处理。 这些是 Android 基础知识的一些要点,希望对你有所帮助!如果你还有其他问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值