Android系统权限
来源:互联网 发布:淘宝代运营有效果吗 编辑:程序博客网 时间:2024/05/16 09:54
目录
- 声明权限:应用清单中声明需要的权限
- 运行时请求权限:应用运行时请求用户授予权限[Android 6.0(API 级别 23)]
- 权限最佳做法
6.0前所有权限添加和6.0后正常权限添加
添加方式
正常权限不会直接给用户隐私权带来风险。如在其清单中列出了正常权限,系统将自动授予该权限
危险权限会授予应用访问用户机密数据的权限。如在其清单中列出了正常权限,系统将自动授予该权限。如列出了危险权限,则用户必须明确批准您的应用使用这些权限(代码中动态添加权限)
危险权限和权限组(6.0),其他为正常权限
CALENDAR
- READ_CALENDAR
- WRITE_CALENDAR
CAMERA
- CAMERA
CONTACTS
- READ_CONTACTS
- WRITE_CONTACTS
- GET_ACCOUNTS
LOCATION
- ACCESS_FINE_LOCATION
- ACCESS_COARSE_LOCATION
MICROPHONE
- RECORD_AUDIO
PHONE
- READ_PHONE_STATE
- CALL_PHONE
- READ_CALL_LOG
- WRITE_CALL_LOG
- ADD_VOICEMAIL
- USE_SIP
- PROCESS_OUTGOING_CALLS
SENSORS
- BODY_SENSORS
SMS
- SEND_SMS
- RECEIVE_SMS
- READ_SMS
- RECEIVE_WAP_PUSH
- RECEIVE_MMS
STORAGE
- READ_EXTERNAL_STORAGE
- WRITE_EXTERNAL_STORAGE
如需要添加短信权限,即在清单文件中声明 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>
运行时请求权限
大致流程
判断用户是否开启该权限
判断用户是否已经拒绝过该权限,若拒绝过,提示其开启
若第一次需要该权限,提示用户选择开启/拒绝该权限
在回调方法onRequestPermissionsResult中获取用户选择情况,并做对应处理
详细案例
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; }}
阅读全文
0 0
- 获取Android系统权限
- android系统权限大全
- Android系统权限配置
- android系统权限大全
- Android系统常用权限
- android 系统权限汇总
- Android系统权限配置
- android系统权限大全
- Android 系统文件权限
- android系统权限大全
- Android 系统常用权限
- android系统权限设置
- Android 系统权限
- Android系统权限配置
- Android 权限系统
- Android 权限系统
- android系统权限
- android 系统权限说明
- linux 创建用户并给用户添加sudo权利
- POI在同一个Excel文件中创建多个sheet页并分别命名
- Android L使用adb命令获取FocusedApp 包名错误(原生bug)
- PythonWeb开发Django框架学习(九)使用Model类操作数据库数据
- windows下用Anaconda3做基于维基百科中文word2vec训练
- Android系统权限
- 软件测试之App测试-用户体验测试
- 数据库设计原则
- respond.js media query
- 微信的微信支付终于弄好了
- Splatter Painting
- Spark集群搭建
- [JS] ES6语法上手
- 简单封装一下AFNetworking