4
次のコードを使用してランタイムカメラのアクセス許可をチェックしていても、私のアプリケーションでCamera2 apiを使用しようとしています。Androidのカメラランタイムの権限エラーですか?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
cameraManager.openCamera(cameraId, stateCallBack, null);
} else {
if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA))
Toast.makeText(getApplicationContext(), "PLease allow the app to use camera app", Toast.LENGTH_LONG).show();
}
ActivityCompat.requestPermissions(CaptureImageActivity.this,new String[]{"android.manifest.permissin.CAMERA"}, CAMERA_REQUEST_RESULT);
} else {
cameraManager.openCamera(cameraId, stateCallBack, null);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permission, int[] grantResult) {
switch (requestCode) {
case CAMERA_REQUEST_RESULT:
if (grantResult[0] == PackageManager.PERMISSION_GRANTED) {
try {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
//this method is created because of openCamera method below i don't understand why this method is created
return;
}
cameraManager.openCamera(cameraId, stateCallBack, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
if (grantResult[0] != PackageManager.PERMISSION_GRANTED)
Toast.makeText(getApplicationContext(), "camera is not granted", Toast.LENGTH_LONG).show();
break;
default:
super.onRequestPermissionsResult(requestCode, permission, grantResult);
break;
}
}
また、AndroidManifest.xmlファイルには許可が含まれています。
<uses-permission android:name="android.permission.CAMERA" />
私のアプリを実行すると、許可ダイアログは表示されませんが、カメラはトーストが表示されていません。
1)なぜ許可ダイアログが表示されないのですか?
2)表示されているダイアログが表示されない場合、どのようにカメラにトーストが表示されますか?私は多くを検索しましたが、何も助けません!ここで
は私のコードは、あなたのコードに似ているが、これは動作しませんです。 – Yirga