I want to check a permission inside a fragment.
my code:
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPe
Fragment has requestPermissions()
and onRequestPermissionsResult()
methods, use it.
But checkSelfPermission()
is from ActivityCompat
(not require Activity
, only Context
).
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions( //Method of Fragment
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_PERMISSIONS_CODE_WRITE_STORAGE
);
} else {
downloadImage();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_PERMISSIONS_CODE_WRITE_STORAGE) {
if (permissions[0].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
proceedWithSdCard();
}
}
}
onRequestPermissionsResult
is invoked in the activity not the fragment. Try overriding onRequestPermissionsResult
in the activity instead.
To handle permissions in a Fragment
call requestPermissions
method. If you override onRequestPermissionsResult
method in both fragment and activity, containing that fragment, make sure to call super.onRequestPermissionsResult(...)
in the activity method to propagate call to the onRequestPermissionsResult
method in the fragment.