Reputation: 946
I want to check all permissions on application startup with this code:
public void checkPermissions() {
List<String> permissions = new ArrayList<>();
permissions.add(Manifest.permission.INTERNET);
permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
List<String> deniedPermissions = new ArrayList<>();
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_DENIED) {
deniedPermissions.add(permission);
}
}
if (deniedPermissions.size() > 0) {
Activity activity = (Activity) context;
ActivityCompat.requestPermissions(activity, deniedPermissions.toArray(new String[deniedPermissions.size()]), PERMISSIONS);
}
}
If the user accepts the permission this code gets called:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case MainController.PERMISSIONS:
boolean allPermissionsGranted = true;
for (int grantResult : grantResults) {
if (grantResult == PackageManager.PERMISSION_DENIED)
allPermissionsGranted = false;
}
if (!allPermissionsGranted) {
View view = findViewById(R.id.content_main);
Snackbar snackBar = Snackbar.make(view, "YOLO", Snackbar.LENGTH_LONG);
}
break;
}
}
but if he declines, nothing happens and the onRequestPermissionsResult function never gets called.
Am I doing something wrong?
Upvotes: 0
Views: 258
Reputation: 946
Ok I solved the problem by implementing the interface ActivityCompat.OnRequestPermissionsResultCallback
Upvotes: 2