Created
February 19, 2018 18:15
-
-
Save Bramengton/81c7c0640a44d13d179f76a95b21f888 to your computer and use it in GitHub Desktop.
Request permission
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.mphone.callerplus; | |
import android.content.Context; | |
import android.content.pm.PackageManager; | |
import android.os.Build; | |
import android.support.annotation.NonNull; | |
import android.support.v4.app.Fragment; | |
import android.support.v4.content.ContextCompat; | |
import com.mphone.callerplus.utils.UIUtil; | |
/** | |
* @author by Bramengton on 03.07.16. | |
*/ | |
public final class PermissionApplication { | |
private static final int MIN_API = 23; //Android M | |
private static final int PERMISSION_REQUEST_CODE = 100; | |
private boolean mIsPermissionGranted = false; | |
private Fragment mFragment; | |
private String[] mPermission; | |
//private MIUIHelper mMIUIHelper; | |
private OnFragmentPermissionListener mListener; | |
public interface OnFragmentPermissionListener{ | |
void onPermissionGranted(); | |
void onPermissionDenied(String[] permissions); | |
} | |
public PermissionApplication(String[] permission){ | |
mPermission = permission; | |
//mMIUIHelper = MIUIHelper.getInstance(); | |
} | |
public boolean IsPermissionGranted(){ | |
return mIsPermissionGranted; | |
} | |
public void getCheckPermission(Fragment fragment, OnFragmentPermissionListener listener) { | |
mListener = listener; | |
mFragment = fragment; | |
if(mIsPermissionGranted) return; | |
if (isPermissionsEnabled(mFragment.getContext(), mPermission) && listener != null) { | |
mIsPermissionGranted = true; | |
mListener.onPermissionGranted(); | |
}else getRequestPermission(mFragment, mPermission); | |
} | |
public boolean isPermissionsEnabled(Context context, String[] permissions) { | |
if (Build.VERSION.SDK_INT < MIN_API) return mIsPermissionGranted=true; | |
int grant = 0; | |
for (String permission: permissions) | |
if(ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED) | |
grant++; | |
return grant == permissions.length; | |
} | |
private void getApplicationRequestPermission(Fragment fragment, String[] permissions) { | |
fragment.requestPermissions(permissions, PERMISSION_REQUEST_CODE); | |
} | |
public void getApplicationRequestPermission(String[] permissions) { | |
if(mIsPermissionGranted) return; | |
getApplicationRequestPermission(mFragment, permissions); | |
} | |
private void getRequestPermission(Fragment fragment,String[] permissions) { | |
/* | |
int should = 0; | |
for (String permission: permissions) | |
if(!fragment.shouldShowRequestPermissionRationale(permission)) | |
should++; | |
if(should == permissions.length){} | |
*/ | |
getApplicationRequestPermission(fragment, permissions); | |
} | |
public void getRequestPermissionsResult(int requestCode, @NonNull final String[] permissions, @NonNull int[] grantResults) { | |
if (requestCode == PERMISSION_REQUEST_CODE && grantResults.length > 0 && mListener!=null) { | |
String[] mPermissionsDenied = new String[0]; | |
for (int i=0; i<permissions.length; i++) { | |
if (grantResults[i] == PackageManager.PERMISSION_DENIED) { | |
mPermissionsDenied = UIUtil.addElement(mPermissionsDenied, permissions[i]); | |
} | |
} | |
if(mPermissionsDenied.length==0){ | |
mIsPermissionGranted = true; | |
mListener.onPermissionGranted(); | |
}else { | |
mListener.onPermissionDenied(mPermissionsDenied); | |
} | |
} | |
} | |
// private String[] addElement(String[] org, String added) { | |
// String[] result = Arrays.copyOf(org, org.length+1); | |
// result[org.length] = added; | |
// return result; | |
// } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment