Android6.0 运行时权限
时间:2019-01-23
本文章向大家介绍Android6.0 运行时权限,主要包括Android6.0 运行时权限使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在Android的上百多种权限里,普通权限不用记,只需要记住危险权限;危险权限一共9组24个:
这里做一个打电话的demo:
1:点击按钮判断用户是否授权:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1);
}else {
call();
}
}
});
检查权限 是用的ContextCompat.checkSelfPermission()方法,它接收两个参数,一参:context,二参:具体的权限名,得到的返回值与PackageManager.PERMISSION_GRANTED作比较,如果想等就说明已经授权;
反之不相等,需要通过ActivityCompat.requestPermissions()方法来申请权限,它接收三个参数,一参:context; 二参:string数组 把我们需要申请的权限名放里边,可以放多个;三参:传入唯一的请求码(与onRequestPermissionsResult的第一个参数相对应);
ActivityCompat.requestPermissions()方法会弹出一个对话框,无论用户选择确定和拒绝都会回调下面的onRequestPermissionsResult()方法:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1:
if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
call();
}else {
Toast.makeText(this, "You denied the permission!", Toast.LENGTH_SHORT).show();
}
}
}
onRequestPermissionsResult()方法
一参:是与ActivityCompat.requestPermissions()方法的第三个参数相对应的唯一请求码;
二参:权限名数组
三参:封装 授权的结果
下面是Call()方法的具体代码:
private void call() {
try {
Intent intent=new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}catch (SecurityException e){
e.printStackTrace();
}
}
这样就完成了!在6.0及以上的android手机上运行此程序,点击按钮会触发权限,同意便会拨打电话,拒绝也不会影响程序运行。
- 线程池定制初探
- 由浅入深表达式树(二)遍历表达式树
- 由浅入深表达式树(一)创建表达式树
- 重读算法导论之算法基础
- 算法之数组和问题
- 由浅入深表达式树(完结篇)重磅打造 Linq To 博客园
- 算法之逆序对
- Windows平台分布式架构实践 - 负载均衡
- Web Service初探
- async & await 的前世今生(Updated)
- MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN
- Spring @Transactional踩坑记
- jvm运行时环境属性一览
- bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android使用LinearLayout设置边框
- Android编程实现状态保存的方法分析
- Android中TextView和ImageView实现倾斜效果
- Notification消息通知 自定义消息通知内容布局
- Android编程实现带渐变效果的圆角矩形示例
- Android仿苹果关机界面实现代码
- Android使用RecycleView实现拖拽交换item位置
- Android编程之计时器Chronometer简单示例
- Android OnFocuChangeListener焦点事件详解
- Android自定义加载圈动画效果
- Android 中ImageView的ScaleType使用方法
- ViewPager实现漂亮的引导页
- Android FTP 多线程断点续传下载上传的实例
- Android如何调用系统相机拍照
- Android开发之设置开机自动启动的几种方法