Android运行时权限简介及判断

在AndroidManifest中声明权限后,

如果用户

在低于6.0系统设备上安装该程序,安装时就会弹出提示框提醒,用户可以清楚知道该程序一共申请了哪些权限,从而决定是否安装此程序,如果安装了也可以在一些手机自带的手机管家中可以设置打开关闭这些权限

在6.0系统后加入了运行时权限 和苹果挺像的 用户可以在使用时进行授权。注:不是所有都是在运行时授权,普通权限系统自动授权,危险权限手动操作。

下面是Android的所有危险权限:

权限组名权限名
CALENDAR  日历READ_CALENDAR
WRITE_CALENDER
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  短信 
Short Message Service
SEND_SMS
RECEIVE_SMS
READ_SMS
RECEIVE_WAP_PUSH
RECEIVE_MMS
STORAGE 数据存储READ_EXTRAL_STRORAGE
WRITE_EXTERNAL_STORAGE

 
访问:http://developer.android.com/reference/android/Manifest.permission.html可以查看完整权限列表
  或者:http://blog.csdn.net/ufo00001/article/details/69397256

在程序运行时申请权限:

以拨打电话为例,在AndroidManifest中声明权限  <uses-permissionandroid:name="android.permission.CALL_PHONE"/> 后

if(ContextCompat.checkSelfPermission(DataSaveActivity.this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
    ActivityCompat.requestPermissions(DataSaveActivity.this,new String[]{Manifest.permission.CALL_PHONE},1);
}else{
    try{
        call();
    }catch (SecurityException e){
        e.printStackTrace();
    }
}


private void call(){
    startActivity(new Intent(Intent.ACTION_CALL).setData(Uri.parse("tel:520520520")));
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    //super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode){
        case 1:
            if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
                call();
            }else{
                Toast.makeText(this,"你拒绝了拨打电话权限",Toast.LENGTH_LONG).show();
            }
            break;
        default:
    }
}
 
  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值