Java 摄像头请求权限出现错误
我是android新手,我正在尝试构建一个手电筒应用程序。我试图请求使用相机的许可,但无法解决相机的请求。任何解释和解决方案。找到下面的代码Java 摄像头请求权限出现错误,java,android,Java,Android,我是android新手,我正在尝试构建一个手电筒应用程序。我试图请求使用相机的许可,但无法解决相机的请求。任何解释和解决方案。找到下面的代码 mButtonEnabled = findViewById(R.id.buttonEnable); mButtonEnabled.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
mButtonEnabled = findViewById(R.id.buttonEnable);
mButtonEnabled.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[] {Manifest.permission.CAMERA}, CAMERA_REQUEST);
}
});
}
您可以根据需要使用任何号码。Android没有这个属性,它只是您下一步处理响应的标识符。接下来,我编写了为摄像头授予运行时权限的代码,其中有一个数组字符串,您可以在运行时根据需要授予多个请求 公共类MainActivity扩展了AppCompatActivity{ 私有静态最终int权限\请求\代码=200
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (checkPermission()) {
//main logic or main code
// . write your main code to execute, It will execute if the permission is already given.
} else {
requestPermission();
}
}
private boolean checkPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
return false;
}
return true;
}
private void requestPermission() {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA},
PERMISSION_REQUEST_CODE);
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getApplicationContext(), "Permission Granted", Toast.LENGTH_SHORT).show();
// main logic
} else {
Toast.makeText(getApplicationContext(), "Permission Denied", Toast.LENGTH_SHORT).show();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
showMessageOKCancel("You need to allow access permissions",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermission();
}
}
});
}
}
}
break;
}
}
private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
new AlertDialog.Builder(MainActivity.this)
.setMessage(message)
.setPositiveButton("OK", okListener)
.setNegativeButton("Cancel", null)
.create()
.show();
}
}
希望对您有所帮助我假设您遇到的错误是编译器错误,因为没有声明CAMERA_请求。这只是一个数字,您可以将其定义为您正在发出的请求的id。理想情况下,应该将其定义为实例变量 此id将通过方法调用作为requestCode传递给您,以帮助您识别响应针对哪个请求。它还将授予分别授予的权限,因为您可以一次请求多个权限:
private final int REQUEST_CAMERA_ID = 123456;
public void setupUI() {
mButtonEnabled = findViewById(R.id.buttonEnable);
mButtonEnabled.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[] {Manifest.permission.CAMERA}, REQUEST_CAMERA_ID);
}
});
}
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_CAMERA_ID:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission was granted
} else {
// Permission was denied
}
break;
}
}
谢谢,richard,这很有效。我好像没有申报拍照要求