Android开发中权限配置

  对于Android开发来说,经常需要申请权限,Android6.0以前,所有权限的配置只需要在配置文件AndroidManifest.xml中编写权限配置就可以了,但Android6.0以后版本中,Google为了提高系统的安全性,当APP需要用到用户隐私权限时需要进行权限配置,除了在配置文件AndroidManifest.xml中编写权限配置之外,还需要手动进行权限适配。申请权限的方式有以下两种:

  ①、在配置文件AndroidManifest.xml中编写权限配置

  ②、在逻辑代码中动态申请权限授权

  Android权限可以分为两大类:普通权限和高级权限。

一、普通权限

  常见的普通权限如下所示。

 1 ACCESS_LOCATION_EXTRA_COMMANDS   定位权限
 2 ACCESS_NETWORK_STATE         网络状态权限
 3 ACCESS_NOTIFICATION_POLICY      通知 APP通知显示在状态栏
 4 ACCESS_WIFI_STATE WiFi         状态权限
 5 BLUETOOTH                      使用蓝牙权限
 6 BLUETOOTH_ADMIN             控制蓝牙开关
 7 BROADCAST_STICKY            粘性广播
 8 CHANGE_NETWORK_STATE           改变网络状态
 9 CHANGE_WIFI_MULTICAST_STATE     改变WiFi多播状态,应该是控制手机热点(猜测)
10 CHANGE_WIFI_STATE           控制WiFi开关,改变WiFi状态
11 DISABLE_KEYGUARD              改变键盘为不可用
12 EXPAND_STATUS_BAR            扩展bar的状态
13 GET_PACKAGE_SIZE            获取应用安装包大小
14 INTERNET                网络权限
15 KILL_BACKGROUND_PROCESSES      杀死后台进程
16 MODIFY_AUDIO_SETTINGS         改变音频输出设置
17 NFC                   支付
18 READ_SYNC_SETTINGS           获取手机设置信息
19 READ_SYNC_STATS             数据统计
20 RECEIVE_BOOT_COMPLETED        监听启动广播
21 REORDER_TASKS             创建新栈
22 REQUEST_INSTALL_PACKAGES       安装应用程序
23 SET_TIME_ZONE              允许应用程序设置系统时间区域
24 SET_WALLPAPER              设置壁纸
25 SET_WALLPAPER_HINTS          设置壁纸上的提示信息,个性化语言
26 TRANSMIT_IR               红外发射
27 USE_FINGERPRINT             指纹识别
28 VIBRATE                  震动
29 WAKE_LOCK                 锁屏
30 WRITE_SYNC_SETTINGS            改变设置
31 SET_ALARM                    设置警告提示
32 INSTALL_SHORTCUT               创建快捷方式
33 UNINSTALL_SHORTCUT           删除快捷方式

  在AndroidManifest.xml文件中的配置方式如下:

1 //XXXX为需要配置的权限名称
2 <uses-permission android:name="android.permission.XXXX"/>

二、高级权限

  高级权限如下所示。

 1 READ_CALENDAR        日历
 2 WRITE_CALENDAR        日历
 3 CAMERA            相机
 4 READ_CONTACTS         联系人
 5 WRITE_CONTACTS        联系人
 6 GET_ACCOUNTS         联系人
 7 ACCESS_FINE_LOCATION    位置
 8 ACCESS_COARSE_LOCATION  位置
 9 RECORD_AUDIO         麦克风
10 READ_PHONE_STATE       电话
11 CALL_PHONE          电话
12 READ_CALL_LOG        电话
13 WRITE_CALL_LOG        电话
14 ADD_VOICEMAIL        电话
15 USE_SIP            电话
16 PROCESS_OUTGOING_CALLS  电话
17 BODY_SENSORS         传感器
18 SEND_SMS           短信
19 RECEIVE_SMS         短信
20 READ_SMS           短信
21 RECEIVE_WAP_PUSH      短信
22 RECEIVE_MMS         短信
23 READ_EXTERNAL_STORAGE  存储
24 WRITE_EXTERNAL_STORAGE 存储

  动态权限申请的逻辑代码如下所示(以官方读写内存为例):

 1 public void requestAllPower() {
 2         if (ContextCompat.checkSelfPermission(this,
 3                 Manifest.permission.WRITE_EXTERNAL_STORAGE)
 4                 != PackageManager.PERMISSION_GRANTED) {
 5             if (ActivityCompat.shouldShowRequestPermissionRationale(this,
 6                     Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
 7             } else {
 8                 ActivityCompat.requestPermissions(this,
 9                         new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
10                                 Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
11             }
12         }
13     }

  判断动态申请权限的结果代码如下:

 1 @Override
 2     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
 3         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 4
 5         if (requestCode == 1) {
 6             for (int i = 0; i < permissions.length; i++) {
 7                 if (grantResults[i] == PERMISSION_GRANTED) {
 8                     Toast.makeText(this, "" + "权限" + permissions[i] + "申请成功", Toast.LENGTH_SHORT).show();
 9                 } else {
10                     Toast.makeText(this, "" + "权限" + permissions[i] + "申请失败", Toast.LENGTH_SHORT).show();
11                 }
12             }
13         }
14     }

  对于动态权限申请,可以采用封装好的权限申请框架方便的处理权限申请问题,这样有利于代码的重用和整洁性,可以参考以下几个链接:

  ①、https://blog.csdn.net/fireqiang2/article/details/78343233

  ②、https://blog.csdn.net/wdd1324/article/details/79402573

  ③、https://blog.csdn.net/jsxin0816/article/details/78605731

  ④、https://www.jianshu.com/p/52e66d9e4a9a

原文地址:https://www.cnblogs.com/chenfeifen/p/11774339.html

时间: 2024-10-12 03:01:44

Android开发中权限配置的相关文章

android权限--android开发中的权限及含义(上)

android权限--android开发中的权限及含义(上) android.permission.EXPAND_STATUS_BAR 允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序 android.permission.FACTORY_TEST 作为一个工厂测试程序,运行在root用户 android.permission.FLASHLIGHT 访问闪光灯,android开发网提示HTC Dream不包含闪光灯 android.pe

64位ubuntu下Android开发环境的配置

本文介绍如何在64位ubuntu上搭建android的开发环境. 系统:ubuntu12.04LTS 使用的是ADT Bundle for Linux和jdk1.7(open jdk也可) 一共分为3步走: 1.配置JDK 安装Open jdk $sudo apt-get install openjdk-7-jdk 或 从oracle官网下载 从官网下载JDK64位版 解压安装 将解压出的文件用最高权限复制到/usr/lib/jvm里 sudo cp -r ~/jdk1.7/ /usr/lib/

android开发的权限获取 (转载的)

访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 获取精确位置 android.permission.ACCESS_FINE_LOCATION,通过GPS芯片接收卫星的定位信息,定位精度达10米以内 访问定

android开发中的5种存储数据方式

数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstance State保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整

在android开发中如何使用JavaMail程序

javaMail,是提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Microsoft outlook的应用程序.JavaMail是可选包,因此如果需要使用的话你需要首先从java官网上下载. 本文主要介绍JavaMail,javamail发送邮件确实是一个比较麻烦的问题不用第三方邮件程序.为了以后使用方便,自己写了段代码       Javamail-Android配置步骤: 下载A

android开发中经常遇到的问题汇总

大家都在为项目开发成功而喜悦,但可不知成功的路上是会经常出错的,下面是我碰到的一些错误集合! [错误信息] [2011-01-19 16:39:10 - ApiDemos] WARNING: Application does not specify an API level requirement![2011-01-19 16:39:10 - ApiDemos] Device API version is 8 (Android 2.2) 原因: 不影响正常运行.在AndroidManifest.

android开发中碰到的三个小问题

Android开发中注意到的几个问题 1.  关于actionbar 初始化配置actionbar,getactionbar经常为null,原因是因为在源码或者布局文件中设置了全屏显示的缘故,不设置全屏显示就不会有问题. 2.  关于textview Textview默认是没有焦点的,因此不可能有点击事件,也无法直接实现背景的selector.通过设置android:clickable = true;就可以了,这一点与Button有很大的不同 3.  关于sourcinsight中的php代码.

Android开发中使用七牛云存储进行图片上传下载

Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储原理,上面这幅图片是官方给出的原理图,表述当然比较清晰了.可以看出,要进行图片上传的话可以分为五大步: 1. 客户端用户登录到APP的账号系统里面: 2. 客户端上传文件之前,需要向业务服务器申请七牛的上传凭证,这个凭证由业务服务器使用七牛提供的服务端SDK生成: 3. 客户端使用七牛提供的客户端S

Android开发中出现cannot be resolved to a variable错误,也就是R文件不能生成。

最近开始学过习Android开发,配置完成开发环境后,在创建第一个Android项目就出现了cannot be resolved to a variable错误,也就是R文件不能生成的问题. 以下是从网上找到的解决方法 : Android开发过程中,碰到R cannot be resolved to a variable的报错信息,好像没有很确定的错误原因,一般来说,我总结出几个可能的解决方法,希望试过以后管用... 1. 检查Android 的SDK是否丢失需要重新下载,检查build pat