Android的权限动态申请需要注意的地方

        自从安卓6.0来了之后,权限的动态申请问题就一直让代码不美观,但是因为工作比较忙,一直没有怎么样去对这个权限动态申请的封装。今天心血来潮,准备封装一下,虽然最终还是因为不符合封装预期放弃了,但是还是得到了一些之前没关注的点。

        首先需要动态申请的“危险”权限的列表

        总结如下:android.permission-group是权限组,下面是权限组中的权限

android.permission-group.CALENDAR

android.permission.READ_CALENDAR      //允许程序读取用户日历数据
android.permission.WRITE_CALENDAR     //允许一个程序写入但不读取用户日历数据

android.permission-group.CAMERA
android.permission.CAMERA            //允许访问摄像头进行拍照

android.permission-group.CONTACTS
android.permission.READ_CONTACTS     //允许应用访问联系人通讯录信息
android.permission.WRITE_CONTACTS    //写入联系人,但不可读取
android.permission.GET_ACCOUNTS    //访问一个帐户列表在Accounts Service中

android.permission-group.LOCATION
android.permission.ACCESS_FINE_LOCATION      //允许一个程序访问精良位置(如GPS)
android.permission.ACCESS_COARSE_LOCATION    //通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米

android.permission-group.MICROPHONE
android.permission.RECORD_AUDIO            //录制声音通过手机或耳机的麦克

android.permission-group.PHONE
android.permission.READ_PHONE_STATE             //访问电话状态
android.permission.CALL_PHONE                      //允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认
android.permission.READ_CALL_LOG
android.permission.WRITE_CALL_LOG

com.android.voicemail.permission.ADD_VOICEMAIL
android.permission.USE_SIP                       //允许程序使用SIP视频服务
android.permission.PROCESS_OUTGOING_CALLS          //允许程序监视、修改有关播出电话

android.permission-group.SENSORS
android.permission.BODY_SENSORS

android.permission-group.SMS
android.permission.SEND_SMS                  //发送短信
android.permission.RECEIVE_SMS              //允许程序监控一个将收到短信息,记录或处理
android.permission.READ_SMS                  //允许程序读取短信息
android.permission.RECEIVE_WAP_PUSH           //允许程序监控将收到WAP PUSH信息
android.permission.RECEIVE_MMS                //允许一个程序监控将收到MMS彩信,记录或处理
android.permission.READ_CELL_BROADCASTS

android.permission-group.STORAGE
android.permission.READ_EXTERNAL_STORAGE           //允许程序读取外部存储
android.permission.WRITE_EXTERNAL_STORAGE         //允许程序写入外部存储,如SD卡上写文件
          有了上面的表之后接下来就是,就是动态申请的代码(这个百度一下非常的多)注意这个是在Activity中申请的

/*
单个的权限申请函数
 */
public void Permission_application_sing(Context context, Activity activity, String permission) {
    if (Build.VERSION.SDK_INT >= 23) {   //判断是否是6.0系统
        int checkCallPhonePermission = ContextCompat.checkSelfPermission(context, permission);
        if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(activity, new String[]{permission}, 123);
        } else {
            getPermissiondeal.PermissionAllow_deal();   //权限被允许做的操作
        }
    } else {
        getPermissiondeal.PermissionAllow_deal();       //6.0以下系统直接操作
    }
}   
          回调函数

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode) {
        case 123:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {       //用户点击了允许权限
                Log.e("onRequestPermissionsResult", "PermissionAllow_deal");
                getPermissiondeal.PermissionAllow_deal();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值