Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.content.pm.PackageManager;
- import android.support.annotation.NonNull;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.content.ContextCompat;
- import android.support.v7.app.AppCompatActivity;
- import java.util.Arrays;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.List;
- /**
- * Created by Abhishek3.patil on 19-04-2017.
- */
- public class PermissionsHelperActivity extends AppCompatActivity
- {
- private int PERMISSION_REQUEST_CODE;
- private IPermissionRequest mIPermissionRequest;
- public interface IPermissionRequest {
- void onPermissionGranted(boolean allowed, int requestCode);
- }
- public void askForPermission(String[] permissions, int requestCode)
- {
- PERMISSION_REQUEST_CODE = requestCode;
- List<String> permissionList = new LinkedList<>(Arrays.asList(permissions));
- Iterator<String> iterator = permissionList.iterator();
- while(iterator.hasNext()) {
- String permission = iterator.next();
- //first, check the permission is already granted or not. If yes, remove it from permission list.
- boolean check = ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED;
- if(check) {
- iterator.remove();
- }
- }
- if (permissionList.size() > 0) {
- ActivityCompat.requestPermissions(this, permissionList.toArray(new String[permissionList.size()]), requestCode);
- } else {
- notifyListener(true, requestCode);
- }
- }
- public void setPermissionRequestListener(IPermissionRequest listener) {
- mIPermissionRequest = listener;
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- if (requestCode == PERMISSION_REQUEST_CODE && grantResults.length > 0) {
- if (isPermissionDenied(grantResults, PackageManager.PERMISSION_DENIED)) {
- notifyListener(false, PERMISSION_REQUEST_CODE);
- } else {
- notifyListener(true, PERMISSION_REQUEST_CODE);
- }
- }
- }
- private boolean isPermissionDenied(final int[] grantResults, final int granted) {
- boolean result = false;
- for(int i : grantResults) {
- if(i == granted) {
- result = true;
- break;
- }
- }
- return result;
- }
- private void notifyListener(boolean allowed, int requestCode) {
- if(mIPermissionRequest != null) {
- mIPermissionRequest.onPermissionGranted(allowed, requestCode);
- }
- }
- }
Add Comment
Please, Sign In to add comment