• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 手动获取判断处理权限,获取判断权限

手动获取判断处理权限,获取判断权限

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了手动root权限获取,怎么手动获取root权限,手动获得root权限,如何手动root权限,手动获取ip地址等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

手动获取判断处理权限,获取判断权限


主要用到的几个方法:

//检查权限
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;
        }
    }
}

  

  

  

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 手动获取判断处理权限,获取判断权限

相关文章

  • 2017-05-26MaterialRefreshLayout,swiperefreshlayout
  • 2017-05-26Android中使用ImageViewSwitcher实现图片切换轮播导航效果,
  • 2017-05-26单机搭建Android开发环境(一),单机搭建android开发
  • 2017-05-26Android取消EditText自动获取焦点默认行为,androidedittext
  • 2017-05-26Android Studio 快捷键
  • 2017-05-26【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新,androidtinker
  • 2017-05-26Android解析编译之后的所有文件(so,dex,xml,arsc)格式
  • 2017-05-26zabbix 应用系列之nginx tcp stream监控
  • 2017-05-26ubuntu vncserver搭建
  • 2017-05-26[Android]异常3-java.lang.NoClassDefFoundError: javax.activation.DataHandler,javax.activation

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android开发:程序目录结构详解
    • Android用Intent来启动Service报“java.lang.IllegalArgumentException: Service Intent must be explicit”错误的解决方法,explicitintent
    • Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失),andrioddialog
    • Android--数据库数据显示至屏幕
    • java中random随机函数的一些理解
    • Android定位&地图&导航——自定义公交路线代码,android定位城市
    • Android中使用ImageViewSwitcher实现图片切换轮播导航效果,
    • android handler传递消息机制,androidhandler
    • Android自动化构建之Ant多渠道打包实践分析(上)
    • 《Android Studio实用指南》7.1 AndroidStudio代码检查工具概述

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有