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.