Could explain me plaese how i should explain to user permission
i work with Camera2API and i implement such snippet of code to ask permishion dinamicly
private void openCamera(int width, int height) {
setUpCameraOutputs(width, height);
CameraHelper.configureTransform(width, height, textureView, previewSize, getActivity());
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
if (!cameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {
throw new RuntimeException("Time out waiting to lock camera opening.");
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) !=
PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(
getActivity(), new String[]{android.Manifest.permission.CAMERA},
MY_PERMISSIONS_REQUEST);
// MY_PERMISSIONS_REQUEST is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
} catch (InterruptedException e) {
throw new RuntimeException("Interrupted while trying to lock camera opening.", e);
}
}
according to google docks i should check if user deny permission before
there is method which return true of false
shouldShowRequestPermissionRationale();
and according google
This method returns true if the app has requested this permission previously and the user denied the request.
if i understand correctly according google comments inside this method implementation
// Show an explanation to the user asynchronously -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
And finally for example user deny my permission before and next time when he go to my screen with camera app should create the my castom pop-up with explanation "Please agree this permishion if you want to continue" and for example user agree this time and i should recall this method again according this
// sees the explanation, try again to request the permission.
but this method
shouldShowRequestPermissionRationale();
return to me true
again, because it didn't know about the user intent to agree with permission.
Could you explain me please how to make it properly way? Maybe you have example?