Reputation: 15716
Android Studio 3.4.
Here how I show permission dialog in Fragment:
private boolean checkAndRequestPermissions() {
int internet = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.INTERNET);
int loc = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION);
int loc2 = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION);
List<String> listPermissionsNeeded = new ArrayList<>();
if (internet != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.INTERNET);
}
if (loc != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_COARSE_LOCATION);
}
if (loc2 != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (BuildConfig.DEBUG)
Log.d(TAG, "checkAndRequestPermissions_listPermissionsNeeded(" + listPermissionsNeeded.size() + ")");
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(getActivity(), listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), 1);
return false;
}
return true;
}
Here result:
Nice. But I need to handle click button Allow to do some specific operation.
Upvotes: 0
Views: 475
Reputation: 96
As far I know there is no way to set an listener on that but you can check it the same way afterwards as you checked it before.
if (internet == PackageManager.PERMISSION_GRANTED) {
//internet allowed
}
if (loc == PackageManager.PERMISSION_GRANTED) {
//loc allowed
}
if (loc2 == PackageManager.PERMISSION_GRANTED) {
//loc2 allowed
}
That should solve your problem.
Upvotes: 0
Reputation: 7106
You must override the onRequestPermissionsResult
like so:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 1: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// user pressed ALLOW
} else {
// user pressed DENY
}
return;
}
}
}
Upvotes: 1