IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android之运行时权限 -> 正文阅读

[移动开发]Android之运行时权限

一、 Android权限机制介绍

  • 权限机制:用于保护用户设备的安全性

二、运行时权限介绍

  • 1、运行时权限:用户不需要在安装软件时一次性授权所有申请的权限,而是可以在软件的使用过程中再对某一项权限申请进行授权
  • 2、运行时权限的核心:在程序运行过程中由用户授权我们去执行某些危险操作,程序是不可以擅自做主去执行这些危险操作的
  • 3、Android将所有权限归为两类:①普通权限——系统自动帮我们授权;②危险权限——必须用户手动点击授权才行
  • 4、危险权限种类:9组24个权限
    在这里插入图片描述

三、在程序运行时申请权限
以申请打电话的运行时权限为例:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       ....
        button.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();
                }
            }
        });
    }
    private void call(){
      ....
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
 		....
    }
}
	1、首先借助ContextCompat.checkSelfPermission()方法判断用户是不是已经给过我们授权,该方法传入的第二个参数就是具体的权限名
	2、若没有授权,则调用ActivityCompat.requestPermissions()方法向用户申请授权,这里传入三个参数,第一个是Activity的实例,第二个是一个String数组,我们把要申请的权限名放在数组中即可,第三个参数是请求码(唯一值)
	3、若授权,则调用call()方法直接拨打电话
  private void call() {
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:10086"));
        startActivity(intent);
    }
 @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,"你取消了申请",Toast.LENGTH_SHORT).show();
                }
                break;
            default:
        }
    }
	1、在调用了requestPermissions()方法后,系统会弹出一个权限申请的对话框选择同意还是拒绝
	2、不论我们是选择同意或拒绝权限申请,最终都会回调到onRequestPermissionsResult()方法中 
	3、授权结果会封装到grantResults当中,可以通过grantResults存储的结果进行判断是否成功授权
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:48:38  更:2021-08-23 16:50:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:06:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码