Android权限动态申请示例
获取蓝牙权限为例:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
//权限列表
private String permissionList[] = {
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN,
Manifest.permission.ACCESS_FINE_LOCATION
};
// 授权返回码
public static final int REQUEST_CODE_EXTERNAL_STORAGE = 68;
private void requestPermission(String permissionList[]){
if(Build.VERSION.SDK_INT>Build.VERSION_CODES.M){ //判断当前权限,低版本直接通过,高版本判断
if(ActivityCompat.checkSelfPermission(this,permissionList[0]) != PackageManager.PERMISSION_GRANTED ||
ActivityCompat.checkSelfPermission(this,permissionList[1]) != PackageManager.PERMISSION_GRANTED||
ActivityCompat.checkSelfPermission(this,permissionList[2]) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,permissionList,REQUEST_CODE_EXTERNAL_STORAGE);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,String permission[],int[] grantResults){
if(requestCode == REQUEST_CODE_EXTERNAL_STORAGE){
if(grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED
&& grantResults[2] == PackageManager.PERMISSION_GRANTED){
Log.d("PERMISSION:","权限申请成功!");
}else {
Log.d("PERMISSION:","权限申请失败!");
}
}
}