1.fragment中申请录音权限
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
private static final int PERMISSION_RECODE_AUDIO = 0x14;
private static String[] PERMISSION_AUDIO = {
Manifest.permission.RECORD_AUDIO
};
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP){
if(!((TaskActivity)getActivity()).checkPermission(Manifest.permission.RECORD_AUDIO)){
requestPermissions(PERMISSION_AUDIO, PERMISSION_RECODE_AUDIO);
}
}
fragment中的回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == PERMISSION_RECODE_AUDIO){
for(int i = 0; i < permissions.length; i++){
Logs.i("XXXFragment申请的权限为:"+permissions[i]+",申请结果:"+grantResults[i]);
}
}
}
注意 在fragment中申请权限时不需要ActivityCompat. ,申请录音权限时同时要保证申请了读写权限。
2.fragment中申请相机权限
private static final int PERMISSION_CAMERA_CODE = 0x11;
private static String[] PERMISSION_CAMERA = {
Manifest.permission.RECORD_AUDIO
};
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
if (!((XXXActivity)getActivity()).checkPermission(Manifest.permission.CAMERA)) {
requestPermissions(PERMISSION_CAMERA , PERMISSION_CAMERA_CODE;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == PERMISSION_CAMERA_CODE ){
for(int i = 0; i < permissions.length; i++){
Logs.i("XXXFragment申请的权限为:"+permissions[i]+",申请结果:"+grantResults[i]);
}
}
}
3.activity中申请定位+读写权限
private static final int PERMISSION_LOCATION_CODE = 0x13;
private static String[] PERMISSION_LOCATION={
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
public void requestPermission(){
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {//如果当前版本大于6.0
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED
||ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED
||ActivityCompat.checkSelfPermission(this,Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED
){
ActivityCompat.requestPermissions(MainActivity.this,PERMISSION_LOCATION,PERMISSION_LOCATION_CODE);
}else {
initLocationBD();//百度地图定位
}
}else{
initLocationBD();//百度地图定位
}
}
activity中的回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == PERMISSION_LOCATION_CODE){
for(int i = 0; i < permissions.length; i++){
Logs.i("MainActivity申请的权限为:"+permissions[i]+",申请结果:"+grantResults[i]);
}
initLocationBD();
}
}