此外,任何应用都可定义并实施自己的权限,因此这不是所有可能权限的详尽列表 。So,我们可能在程序运行期间的多个位置实施特定权限,下面为大家简单举几个例子:
? 在调用系统时,防止应用执行某些功能;
? 在启动时,防止应用启动其他应用的 ;
? 在发送和接收广播时,控制谁可以接收你的广播,谁可以向你发送广播;
? 在访问和操作内容提供程序时;
? 绑定至服务或启动服务 。
4. 分类 (正常权限 or 危险权限)
系统权限分为几个保护级别 。需要了解的两个最重要保护级别是正常权限和危险权限:
? 正常权限涵盖应用需要访问其沙盒外部数据或资源,但对用户隐私或其他应用操作风险很小的区域 。例如,设置时区的权限就是正常权限 。如果应用声明其需要正常权限,系统会自动向应用授予该权限 。如需当前正常权限的完整列表,请文章尾部查阅正常权限访问地址链接 。
? 危险权限涵盖应用需要涉及用户隐私信息的数据或资源,或者可能对用户存储的数据或其他应用的操作产生影响的区域 。例如,能够读取用户的联系人属于危险权限 。如果应用声明其需要危险权限,则用户必须明确向应用授予该权限 。
5. Group
所有危险的系统权限都属于权限组 。如果设备运行的是6.0(API 级别 23),并且应用的 是 23 或更高版本,则当用户请求危险权限时系统会发生以下行为:
? 如果应用请求其清单中列出的危险权限,而应用目前在权限组中没有任何权限,则系统会向用户显示一个对话框,描述应用要访问的权限组 。对话框不描述该组内的具体权限 。例如,如果应用请求 权限,系统对话框只说明该应用需要访问设备的联系信息 。如果用户批准,系统将向应用授予其请求的权限 。
? 如果应用请求其清单中列出的危险权限,而应用在同一权限组中已有另一项危险权限,则系统会立即授予该权限,而无需与用户进行任何交互 。例如,如果某应用已经请求并且被授予了权限,然后它又请求,系统将立即授予该权限 。
任何权限都可属于一个权限组,包括正常权限和应用定义的权限 。但权限组仅当权限危险时才影响用户体验 。可以忽略正常权限的权限组 。
如果设备运行的是5.1(API 级别 22)或更低版本,并且应用的是 22 或更低版本,则系统会在安装时要求用户授予权限 。再次强调,系统只告诉用户应用需要的权限组,而不告知具体权限 。
下面为大家附上危险权限以及危险权限组图:
文章插图
Solve(解决权限问题) 红橙 案例1
运行结果图(测试机为红米note46.0):
文章插图
实现起来步骤如下:
1.设置兼容 API为21;
2.申请权限 回调中根据状态码处理 授予权限后进行拨打电话
源码如下:
public class HongChengActivity1 extends Activity {// 打电话权限申请的请求码private static final int CALL_PHONE_REQUEST_CODE = 0x0011;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_hong_cheng1);}public void phoneClick(View view) {if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "申请权限", Toast.LENGTH_SHORT).show();ActivityCompat.requestPermissions(this,new String[]{"Manifest.permission.CALL_PHONE"}, CALL_PHONE_REQUEST_CODE);} else {callPhone();}}/*** 拨打电话**/private void callPhone() {Intent intent = new Intent(Intent.ACTION_CALL);Uri data = http://www.kingceram.com/post/Uri.parse("tel:114");intent.setData(data);startActivity(intent);}@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == CALL_PHONE_REQUEST_CODE) {if (grantResults != null && grantResults[0] == PackageManager.PERMISSION_GRANTED) {// Permission GrantedcallPhone();} else {// Permission DeniedToast.makeText(this, "权限被拒绝了", Toast.LENGTH_SHORT).show();}}}}
- 山东冷知识:推荐山东这20个世界之最和中国之最,你还知道哪些? 中国之最在山东
- 一位教授的惊人调查:中国农村当前最严重问题,不是农民收入太低 当今中国之最
- 经典!广东话童谣儿歌,你会几首? 中国之最知识儿歌
- 中国超级工程,北盘江大桥耗资10亿有200层楼高,全球最高的大桥 中国之最高桥
- 中国国家地理评出国内10处最美的景点,看看你想去的排在第几 中国之最自然景物
- 第18次到访中国!盖茨在京演讲,他这样盛赞袁隆平屠呦呦 中国之最儿童演讲
- 创意无限快乐相伴|杭州道街道文安里社区开展亲子手工制作活动 中国之最亲子手工
- 电力之最①|温岭石塘:最阳光的渔民“好伙伴” 温岭的中国之最
- 中国高铁落后吗?台媒:为马英九秀速度,大陆刻意飚速350公里 中国之最及长度
- 第34集《成语串起中国史》之二十七上下其手古筝伴奏... 中国之最歌曲伴奏