请求相机权限的代码写在哪里呀,有完整示例吗
时间: 2023-12-03 17:46:07 浏览: 31
请求相机权限的代码通常应该写在应用程序启动时。以下是一个完整的示例,该示例可以在用户打开应用程序时请求相机权限:
```java
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CAMERA_PERMISSION = 200;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
requestCameraPermission();
} else {
// 相机权限已授予,可以执行相应操作
}
}
private void requestCameraPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.CAMERA)) {
new AlertDialog.Builder(this)
.setTitle("请求相机权限")
.setMessage("此应用程序需要相机权限才能正常工作")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CAMERA},
REQUEST_CAMERA_PERMISSION);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.show();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA},
REQUEST_CAMERA_PERMISSION);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode == REQUEST_CAMERA_PERMISSION) {
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 相机权限已授予,可以执行相应操作
} else {
finish();
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}
```
该示例中,如果应用程序还没有被授予相机权限,`requestCameraPermission` 方法将显示一个对话框来请求该权限。如果用户拒绝了请求,应用程序将被关闭;否则,系统将显示一个权限请求对话框,用户可以选择是否授予权限。如果权限被授予,`onRequestPermissionsResult` 方法将被调用,并可在该方法中执行相应的操作。