全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android 手动获取判断处理权限

主要用到的几个方法:

//检查权限
int checkSelfPermission(String)
//申请权限
void requestPermissions(int, String...)
//是否应该显示请求权限的说明
boolean shouldShowRequestPermissionRationale(String)
//处理权限结果回调
void onRequestPermissionsResult(int,String[],int[])

是否有权限常量标识:

PackageManager.PERMISSION_DENIED:拒绝了。

PackageManager.PERMISSION_GRANTED:授权了

上述四个方法中,前三个方法在support-v4的ActivityCompat中都有,建议使用兼容库中的方法。最后一个方法是用户授权或者拒绝某个权限组时系统会回调Activity或者Fragment中的方法。

1. checkSelfPermission(String)

检查权限

1. 检查某一个权限的当前状态,你应该在请求某个权限时检查这个权限是否已经被用户授权,已经授权的权限重复申请可能会让用户产生厌烦。

2. 该方法有一个参数是权限名称,有一个int的返回值,用这个值与上面提到的两个常量做比较可判断检查的权限当前的状态。

if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS)
    != PackageManager.PERMISSION_GRANTED) {
  // 没有权限,可以在这里重新申请权限。
}else{
  // 有权限了。
}

2. requestPermissions(int, String…)

申请权限

请求用户授权几个权限,调用后系统会显示一个请求用户授权的提示对话框,App不能配置和修改这个对话框,如果需要提示用户这个权限相关的信息或说明,需要在调用 requestPermissions() 之前处理

该方法有两个参数:

int requestCode: 会在回调onRequestPermissionsResult()时返回,用来判断是哪个授权申请的回调。

String[] permissions: 权限数组,你需要申请的的权限的数组。

由于该方法是异步的,所以无返回值,当用户处理完授权操作时,会回调Activity或者Fragment的onRequestPermissionsResult()方法。

ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_CONTACTS}, MMM);

3. onRequestPermissionsResult(int,String[],int[])

处理权限结果回调

1. 该方法在Activity/Fragment中应该被重写,当用户处理完授权操作时,系统会自动回调该方法

2. 该方法有三个参数:

int requestCode: 在调用requestPermissions()时的第一个参数。

String[] permissions: 权限数组,在调用requestPermissions()时的第二个参数。

int[] grantResults: 授权结果数组,对应permissions,具体值和上方提到的PackageManager中的两个常量做比较。

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
  switch (requestCode) {
    case MMM: {
      if (grantResults.length > 0
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        // 权限被用户同意,可以做你要做的事情了。
      } else {
        // 权限被用户拒绝了,可以提示用户,关闭界面等等。
      }
      return;
    }
  }
} 

4. shouldShowRequestPermissionRationale(String)

是否应该显示请求权限的说

1.第一次请求权限时,用户拒绝了,调用shouldShowRequestPermissionRationale()后返回true,应该显示一些为什么需要这个权限的说明。

2.用户在第一次拒绝某个权限后,下次再次申请时,授权的dialog中将会出现“不再提醒”选项,一旦选中勾选了,那么下次申请将不会提示用户。

3.第二次请求权限时,用户拒绝了,并选择了“不在提醒”的选项,调用shouldShowRequestPermissionRationale()后返回false。

4.设备的策略禁止当前应用获取这个权限的授权:shouldShowRequestPermissionRationale()返回false 。

5.加这个提醒的好处在于,用户拒绝过一次权限后我们再次申请时可以提醒该权限的重要性,面得再次申请时用户勾选“不再提醒”并决绝,导致下次申请权限直接失败。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {// 没有权限。
 if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS)) {
   // 用户拒绝过这个权限了,应该提示用户,为什么需要这个权限。
 } else {
  // 申请授权。
  ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_CONTACTS}, MMM);
 }
}
...
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
 switch (requestCode) {
  case MMM: {
   if (grantResults.length > 0
    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
    // 权限被用户同意。
   } else {
    // 权限被用户拒绝了。
   }
   return;
  }
 }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# android  # 权限判断  # 判断权限状态  # 获取判断处理权限  # Android 操作系统获取Root权限 原理详细解析  # Android获取ROOT权限的实例代码  # Android权限控制之自定义权限  # Android中Root权限获取的简单代码  # Android需要提升权限的操作方法  # android编程判断应用是否具有某个权限的方法  # Android无需申请权限拨打电话的两种方式  # Android用代码获取手机root之后的最高权限  # 谈谈Android6.0运行时的权限处理  # Android辅助权限的介绍和配置完整记录  # 回调  # 拒绝了  # 几个  # 下次  # 对话框  # 没有权限  # 勾选  # 有一个  # 返回值  # 请求权  # 都有  # 在这里  # 第一个  # 将会  # 的说  # 会在  # 要做  # 第二个  # 会让  # 重写 


相关文章: 微信小程序 五星评分(包括半颗星评分)实例代码  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  网站微信制作软件,如何制作微信链接?  建站之星与建站宝盒如何选择最佳方案?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  音乐网站服务器如何优化API响应速度?  TestNG的testng.xml配置文件怎么写  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  太原网站制作公司有哪些,网约车营运证查询官网?  如何高效完成独享虚拟主机建站?  建站OpenVZ教程与优化策略:配置指南与性能提升  如何做网站制作流程,*游戏网站怎么搭建?  大型企业网站制作流程,做网站需要注册公司吗?  济南专业网站制作公司,济南信息工程学校怎么样?  如何在阿里云通过域名搭建网站?  如何在万网ECS上快速搭建专属网站?  深圳网站制作案例,网页的相关名词有哪些?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何快速配置高效服务器建站软件?  寿县云建站:智能SEO优化与多行业模板快速上线指南  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何通过多用户协作模板快速搭建高效企业网站?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  如何在云虚拟主机上快速搭建个人网站?  网页设计网站制作软件,microsoft office哪个可以创建网页?  如何用5美元大硬盘VPS安全高效搭建个人网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  建站VPS能否同时实现高效与安全翻墙?  济南企业网站制作公司,济南社保单位网上缴费步骤?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  威客平台建站流程解析:高效搭建教程与设计优化方案  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何在阿里云购买域名并搭建网站?  南宁网站建设制作定制,南宁网站建设可以定制吗?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  网站制作新手教程,新手建设一个网站需要注意些什么?  建站上市公司网站建设方案与SEO优化服务定制指南  广东企业建站网站优化与SEO营销核心策略指南  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  如何通过宝塔面板实现本地网站访问?  建站之星代理如何优化在线客服效率?  ,网页ppt怎么弄成自己的ppt?  定制建站价位费用解析与套餐推荐全攻略  网站好制作吗知乎,网站开发好学吗?有什么技巧?  网站制作网站,深圳做网站哪家比较好?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  c# 在高并发场景下,委托和接口调用的性能对比  香港服务器选型指南:免备案配置与高效建站方案解析  ,购物网站怎么盈利呢? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。