首页 > 其他分享 >Android系统权限

Android系统权限

时间:2023-02-01 13:07:02浏览次数:38  
标签:Toast 系统 用户 开启 PHONE CALL Android 权限


目录

  1. 声明权限:应用清单中声明需要的权限
  2. 运行时请求权限:应用运行时请求用户授予权限[Android 6.0(API 级别 23)]
  3. 权限最佳做法

6.0前所有权限添加和6.0后正常权限添加

  1. 添加方式
  • 正常权限不会直接给用户隐私权带来风险。如在其清单中列出了正常权限,系统将自动授予该权限
  • 危险权限会授予应用访问用户机密数据的权限。如在其清单中列出了正常权限,系统将自动授予该权限。如列出了危险权限,则用户必须明确批准您的应用使用这些权限(代码中动态添加权限)
  1. 危险权限和权限组(6.0),其他为正常权限
  1. CALENDAR
  • READ_CALENDAR
  • WRITE_CALENDAR
  1. CAMERA
  • CAMERA
  1. CONTACTS
  • READ_CONTACTS
  • WRITE_CONTACTS
  • GET_ACCOUNTS
  1. LOCATION
  • ACCESS_FINE_LOCATION
  • ACCESS_COARSE_LOCATION
  1. MICROPHONE
  • RECORD_AUDIO
  1. PHONE
  • READ_PHONE_STATE
  • CALL_PHONE
  • READ_CALL_LOG
  • WRITE_CALL_LOG
  • ADD_VOICEMAIL
  • USE_SIP
  • PROCESS_OUTGOING_CALLS
  1. SENSORS
  • BODY_SENSORS
  1. SMS
  • SEND_SMS
  • RECEIVE_SMS
  • READ_SMS
  • RECEIVE_WAP_PUSH
  • RECEIVE_MMS
  1. STORAGE
  • READ_EXTERNAL_STORAGE
  • WRITE_EXTERNAL_STORAGE
  1. 如需要添加短信权限,即在清单文件中声明 uses-permission 即可
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.snazzyapp">

<uses-permission android:name="android.permission.SEND_SMS"/>


<application ...>
...
</application>

</manifest>

运行时请求权限

  1. 大致流程
  1. 判断用户是否开启该权限
  2. 判断用户是否已经拒绝过该权限,若拒绝过,提示其开启
  3. 若第一次需要该权限,提示用户选择开启/拒绝该权限
  4. 在回调方法onRequestPermissionsResult中获取用户选择情况,并做对应处理
  1. 详细案例
private void checkPermission() {
// 1. 判断用户是否开启该权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

// 2. 若用户已拒绝过该权限,返回true. 提示用户开启权限
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CALL_PHONE)) {

Toast.makeText(this, "未获得权限哦,请到设置界面开启该权限吧...", Toast.LENGTH_SHORT).show();

// 3. 第一次使用该权限时调用以请求适当的权限,用户选择结果在onRequestPermissionsResult方法中获取
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_CALL_PHONE);
}

} else {
call();
}
}

// 4. 获取用户接受/拒绝权限的情况
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_CALL_PHONE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
call();
} else {
Toast.makeText(this, "您以选择拒绝开启打电话权限...", Toast.LENGTH_SHORT).show();
}
break;

default:
break;
}
}


标签:Toast,系统,用户,开启,PHONE,CALL,Android,权限
From: https://blog.51cto.com/u_15950249/6031381

相关文章

  • android自定义adapter之简单写法
      自定义adapter比较常用,很多人还在使用extendsBaseAdapter,然后写一大堆重复的代码,这里是提供一个封装的工具类,把重复的代码都省略掉,让adapter变的简洁一些。  给......
  • 8.用户权限命令
      -u指定用户的UID;-G指定用户的附加组普通用户处于home目录下:  useradd-d路径用户名用户名david当前用户david的主目录名为dave    设置用户密码,密......
  • Android全局获取Context上下文实例
    如题,在没有用到Activity的类中也能轻松获取上下文Context实例方法很简单,继承Application,提供获取上下文的静态方法供全局调用在Application类的onCreate()方法中获取Con......
  • 系统文件的权限
    目录​​Android系统的文件权限​​​​修改文件权限​​Android系统的文件权限先看下图分析:​​drwxrw-r--​​(1-3-3-3总共10位)第1位(文件类型):d(目录),-......
  • Android中Java和JS调用对方方法的简介
    AJava调用Js的方法无参:使用WebView控件​​loadUrl()​​方法,传入​​"javascript:jsMethod()"​​即可调用​​jsMethod()​​方法带参:同上,并将参数加上即可​​"java......
  • 千姿百态,瞬息万变,Win11系统NeoVim打造全能/全栈编辑器(前端/Css/Js/Vue/Golang/Ruby
    我曾经多次向人推荐Vim,其热情程度有些类似现在卖保险的,有的时候,人们会因为一些弥足珍贵的美好暗暗渴望一个巨大的负面,比如因为想重温手动挡的快乐而渴望买下一辆二十万公里......
  • 水库水雨情在线监测系统解决方案
    行业背景水雨情自动监测系统适用于水利管理部门和企业远程监测水库、湖泊、河道、防涝泵站、渠道和地下水等的水位、降雨量、流速等实时数据,同时支持远程图像监控,为保障安全......
  • JVM之类加载子系统与双亲委派机制
    JVM之类加载子系统与双亲委派机制一、类加载子系统1.类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识,JVM并不是通过检查文件后缀是......
  • 服务器VPC申请后简单加固过程记录 系统版本 CentOS7.6.1810
    搞了个便宜的服务器大概看了下都是默认配置简单做下配置ssh配置#更换端口vi/etc/ssh/sshd_config将其中的Port22中的22改为自己想用的端口建议用10000以上的......
  • Android 下的usb框架及功能点
    ICS4.0下Framework层的usb框架 Android下的usb主要工作还是在android的framework层。主要有以下几个文件:1.1UsbDeviceManager.java/高主要完成功能切换及状态的更新,......