私はAPI 23+のCAMERA
とACCESS_FINE_LOCATION
のアンドロイドのアクセス許可を正しく設定する方法を見つけようとしています。ACCESS_FINE_LOCATIONのアクセス許可
私のプログラムはCAMERA
を要求しますが、実行時にACCESS_FINE_LOCATION
のアクセス権を要求しません。
私はpermissionsとlocationの開発者ページを読みましたが、アクセス許可を正しく要求する方法を理解できていないようです。私も答えをstackoverflowを見ているが、まだ理解していない。
誰かが私のコードで間違っていることを説明でき、それを修正する方法はありますか?
マイコード:
private void connectCamera() {
CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) ==
PackageManager.PERMISSION_GRANTED) {
cameraManager.openCamera(mCameraId, mCameraDeviceStateCallback, mBackgroundHandler);
} else {
if (shouldShowRequestPermissionRationale(android.Manifest.permission.CAMERA)) {
Toast.makeText(this,
"Video app required access to camera and location", Toast.LENGTH_SHORT).show();
}
requestPermissions(new String[]{android.Manifest.permission.CAMERA,
android.Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
}, REQUEST_CAMERA_PERMISSION_RESULT);
}
} else {
cameraManager.openCamera(mCameraId, mCameraDeviceStateCallback, mBackgroundHandler);
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CAMERA_PERMISSION_RESULT) {
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getApplicationContext(),
"Application will not run without camera and location services!", Toast.LENGTH_SHORT).show();
}
}
}
問題は解決しましたか? – Mauker
はい。ご協力ありがとうございました。 Androids Camera2 APIについて偶然知っていますか? – goofenhour
大歓迎です!少しは分かりますが、Web上にたくさんのチュートリアルやサンプルコードがあります。何かを見つけるのが難しい場合は、新しい質問をしてください:) – Mauker