I have been trying to figure out how to properly setup the android permissions for CAMERA
and ACCESS_FINE_LOCATION
on API 23+.
My program w
you're not asking for the permissions anywhere in the code you provided. To ask for the location feature, you can try the example below:
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
REQUEST_CODE_FINE_GPS);
Also, you're not making your app open the camera once the user gives the permission to use this feature.
Inside your onRequestPermissionsResult()
method, you should add an else
calling openCamera
.
Something like this:
@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();
}
else {
cameraManager.openCamera(mCameraId, mCameraDeviceStateCallback, mBackgroundHandler);
}
}
}
The verification steps are roughly something like the following:
onRequestPermissionsResult()
method. You have to handle the user input there. If he didn't gave permission, and this feature is essential for your app to run, show a dialog, or something else explaining why he should give you the permission, and ask again.Take a look at this answer. That guy created a nice helper method to check and ask for any number of permissions you might need. Then, you'll just have to handle them on the onRequestPermissionsResult()
.
P.S.: I strongly recommend that you re-read the docs on how to request permissions on API 23+, your question shows that you didn't understand the basic concepts of permission requesting. Also, check this link of the Android training page, and this related question.