android M(API23)中对权限的管理更加严格,如果我们用到了相机权限 而未提醒用户去授权,那么会导致App的运行崩溃
因此我们可以通过requestPermissions()方法来提示用户授权
例如:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { //判断当前版本是23以上的版本吗
String[] perms = { "android.permission.CAMERA" };
int permsRequestCode = 200;
requestPermissions(perms, permsRequestCode); //请求授权
} else {
//这里已授权的操作
}
重写 onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)方法 来返回是否授权的结果
例如:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case permsRequestCode:
boolean cameraAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
if (cameraAccepted) {
Toast.makeText(MainActivity.this, "授权成功", 0).show();
} else {
Toast.makeText(MainActivity.this, "授权失败", 0).show();
}
break;
}
}
因此我们可以通过requestPermissions()方法来提示用户授权
例如:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { //判断当前版本是23以上的版本吗
String[] perms = { "android.permission.CAMERA" };
int permsRequestCode = 200;
requestPermissions(perms, permsRequestCode); //请求授权
} else {
//这里已授权的操作
}
重写 onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)方法 来返回是否授权的结果
例如:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case permsRequestCode:
boolean cameraAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
if (cameraAccepted) {
Toast.makeText(MainActivity.this, "授权成功", 0).show();
} else {
Toast.makeText(MainActivity.this, "授权失败", 0).show();
}
break;
}
}