Android新特性 - 6.0动态获取权限
来源:互联网 发布:restful api例子 java 编辑:程序博客网 时间:2024/06/06 02:48
本篇为大家带来的是6.0的主要特性,也就是动态权限,我们都知道在6.0以前我们只需要在AndroidMainfest中配置权限就可以,但是在6.0之后Google考虑到了用户的隐私性方面增添了动态权限,现在我们首先在AndroidMainfest中注册权限,当涉及到用户的隐私时(包含9类27种,其中就有拨打电话,读取信息的权限),我们就是先查看是否授权,如无授权我们就像用户发起请求,大多时候会出现的是一个弹框,在用户同意与拒绝的时候执行各自操作,当用户授权之后就不会再次请求让用户授权。
AndroidMainfest权限添加:
<!--声明权限--> <uses-permission android:name="android.permission.CALL_PHONE" />
ManiActivity Code:
package com.example.administrator.permisson;import android.content.Intent;import android.content.pm.PackageManager;import android.net.Uri;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.app.NotificationCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import android.widget.Toast;import java.security.Permission;import java.util.jar.Manifest;import static android.R.attr.onClick;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView mCall = (TextView) findViewById(R.id.tv_call); mCall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //申请授权 /* *首先我们查看自己的权限是否已经授权,如果没有的话,我们发起授权的请求 * */ if(ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED){ //在动态权限中有一个方法shouldShowRequestPermissionRationale用来监听用户拒绝时候的操作,有时候我们在这里会进行二次弹框,让用户进行授权(有时候有点偏强制),然后发起请求授权,这里我们并没有写出,大家可以按需求进行写入 ActivityCompat.requestPermissions(MainActivity.this,new String[]{android.Manifest.permission.CALL_PHONE},1); }else{ //执行拨打电弧操作 call(); } } }); } //当拥有拨打权限的时候,直接执行拨打电话的操作 private void call() { Intent intent=new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:10010")); try { startActivity(intent); }catch (SecurityException e){ e.printStackTrace();; } } //请求权限的结果-进行回调 @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode){ case 1: //我们发现,上面我们请求权限的时候是以数组的形式请求的,所以这里我们首先判断了授权数组的长度,同时校验角标为0的值是否是我们上面申请的权限(其实因为是数据容器,我们可以多个权限请求,但是我们并不建议这样做) if(grantResults.length>0&&grantResults[0]==getPackageManager().PERMISSION_GRANTED){ call(); }else{ Toast.makeText(this,"权限已经打开",Toast.LENGTH_LONG).show(); } break; default: break; } }}
MainActivity Xml Code:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.administrator.permisson.MainActivity"> <TextView android:id="@+id/tv_call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="6.0电话权限测试" /></RelativeLayout>
注意:
其实当我们编译使用的是sdk23以前版本的话是有一定几率规避动态权限的问题,不会使程序奔溃,当然学习动态权限只是早晚的问题,我们仍需努力。
0 0
- Android新特性 - 6.0动态获取权限
- Android之---Android 6.0新特性权限动态获取
- Android 6.0新特性以及动态获取权限
- Android 6.0新特性之 权限管理
- android 6.0 动态权限获取
- Android 6.0获取动态权限
- android 6.0权限动态获取
- Android 6.0权限动态获取
- Android动态获取权限
- Android 动态获取权限
- Android动态获取权限
- android 动态权限获取
- Android动态获取权限
- Android 6.0敏感权限新特性及使用方法
- Android 6.0敏感权限新特性及使用方法
- Android 6.0新特性之运行时权限
- Android 6.0新特性之运行时权限
- Android 6.0新特性之运行时权限
- 流媒体服务器(Nginx+rtmp)
- 值得推荐的C/C++框架和库 (真的很强大) (转)
- 2017.2.11【初中部 GDKOI】模拟赛B组 T3:空间航行
- NS前缀的来源和使用
- 高阶Python----常用的数据结构与算法
- Android新特性 - 6.0动态获取权限
- linux中ctrl+z和ctrl+c的区别
- How tomcat works——9 session管理
- Android 面试精华题目总结
- 前端问题(12)
- Express之托管静态文件
- 【半年总结】莫惜金缕衣,惜取少年时
- html 标签解释
- HDU1598:find the most comfortable road(并查集 + 枚举)