Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to get scan r

来源:互联网 发布:工程图纸设计软件 编辑:程序博客网 时间:2024/06/09 21:46

安卓6.0多了新的特性,也就是打开app时,经常会提醒你是否允许xx应用获取xx权限,这就是新特性的表现。


也就是说,有的权限,光是在manifest里获取还不够,还要让用户手动允许才能获得这项权限


如果只在manifest里面写,而不让用户手动获取,则会崩溃并报类似

Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission 

的错



目前有以下这些权限需要手动获取

group:android.permission-group.CONTACTS  permission:android.permission.WRITE_CONTACTS  permission:android.permission.GET_ACCOUNTS  permission:android.permission.READ_CONTACTSgroup:android.permission-group.PHONE  permission:android.permission.READ_CALL_LOG  permission:android.permission.READ_PHONE_STATE  permission:android.permission.CALL_PHONE  permission:android.permission.WRITE_CALL_LOG  permission:android.permission.USE_SIP  permission:android.permission.PROCESS_OUTGOING_CALLS  permission:com.android.voicemail.permission.ADD_VOICEMAILgroup:android.permission-group.CALENDAR  permission:android.permission.READ_CALENDAR  permission:android.permission.WRITE_CALENDARgroup:android.permission-group.CAMERA  permission:android.permission.CAMERAgroup:android.permission-group.SENSORS  permission:android.permission.BODY_SENSORSgroup:android.permission-group.LOCATION  permission:android.permission.ACCESS_FINE_LOCATION  permission:android.permission.ACCESS_COARSE_LOCATIONgroup:android.permission-group.STORAGE  permission:android.permission.READ_EXTERNAL_STORAGE  permission:android.permission.WRITE_EXTERNAL_STORAGEgroup:android.permission-group.MICROPHONE  permission:android.permission.RECORD_AUDIOgroup:android.permission-group.SMS  permission:android.permission.READ_SMS  permission:android.permission.RECEIVE_WAP_PUSH  permission:android.permission.RECEIVE_MMS  permission:android.permission.RECEIVE_SMS  permission:android.permission.SEND_SMS  permission:android.permission.READ_CELL_BROADCASTS

获取的代码如下

在activity中

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO)!=PackageManager.PERMISSION_GRANTED)
// 检测是否已被允许这个权限

{ ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.RECORD_AUDIO},1);
//没有,则让用户获取
}



在fragment中

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION)!=PackageManager.PERMISSION_GRANTED)// 检测是否已被允许这个权限{            requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},1);//没有,则让用户获取        }
注意fragment不要写成和activity一样,否则将会无法获取回调函数的结果

阅读全文
0 0
原创粉丝点击