Su uso
A donde queremos realizar la solicitud con hasPêrmissions
podemos obtener si el permiso está permitido o denegado.
con requestPermission
podemos solicitar el permiso, se mostará una snackbar y si se le da click, abrirá si es posible dialogo de solicitud.
Button myButton2 = (Button) findViewById(R.id.btn_contact);
if (myButton2 != null) {
myButton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (PermissionUtil.hasPermissions(MainActivity.this,Manifest.permission.READ_CONTACTS)) {
Log.i(TAG, "Action for: Manifest.permission.READ_CONTACTS ");
} else {
PermissionUtil.requestPermission(MainActivity.this,parentLayout,Manifest.permission.READ_CONTACTS, REQUEST_READ_CONTACT);
}
}
});
}
Procesar el resultado
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
Log.i(TAG, "onRequestPermissionsResult() called with: " + "requestCode = [" + requestCode + "], permissions = [" + permissions + "], grantResults = [" + grantResults + "]");
switch (requestCode) {
case REQUEST_READ_CONTACT: {
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.i(TAG, "REQUEST_READ_CONTACT Permission has been granted by user");
} else if (PermissionUtil.shouldWeAskPermission(MainActivity.this,permissions[0])) {
Log.w(TAG, "REQUEST_READ_CONTACT Permission has been denied by user");
} else {
Log.e(TAG, "Need user go to Settings device ");
}
return;
}
default: {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}