Android 6.0 运行时权限

app在6.0之前的设备依然使用旧的权限系统。如果你还没支持新运行时权限,我建议你首先把targetSdkVersion 降级到22。

1:需要将APP的targetSdkVersion设置到23以上并且在Android6.0以上系统运行
targetSdkVersion 23

  
  
2:在AndroidManifest中配置拨打电话的权限
< uses-permission android:name = "android.permission.CALL_PHONE" ></ uses-permission >
3:如果不做运行时权限处理会怎么样呢?我们直接进行点击按钮拨打电话
public void CallPhone(View v) {  
Intent intent = new Intent(Intent.ACTION_CALL);  
Uri data = Uri.parse( "tel:" + "10010" );  
intent.setData(data);  
startActivity(intent); }
这段代码 在android 6.0系统上运行会崩溃。
4:我们加上运行时权限的处理再运行
private static final int REQUESTCODE = 8 ;  
public void CallPhone(View v) {  
//检查权限  
if (ContextCompat.checkSelfPermission( this ,
Manifest.permission.CALL_PHONE)  
!= PackageManager.PERMISSION_GRANTED) {  
//没有权限,申请权限  
ActivityCompat.requestPermissions( this ,   new String[]{Manifest.permission.CALL_PHONE},   REQUESTCODE);  
} else {  
//已经拥有权限进行拨打  
call(); } }
API: 
REQUESTCODE 的作用是为了进行回调处理,因为申请权限是有回调结果的后面会说到。
ContextCompat.checkSelfPermission  主要用于检测某个权限是否已经被授予,方法参数为(context,需要检测的权限)方法返回值为PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED,当返回PackageManager.PERMISSION_DENIED时需要调用API进行权限申请。
ActivityCompat.requestPermissions  用于权限的申请,方法参数为(context,需要申请的权限数组,自定义的请求码),系统会弹出一个申请权限的对话框。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值