본문으로 바로가기

Nammu 안드로이드 퍼미션 체크 헬퍼

category IT/모바일 2017. 3. 7. 15:00
반응형


안드로이드 6.0 마시멜로우 에서 부터 나오는 화면 입니다.


이거 처리 안 하면 저장 도 안 되고 갤러리에서 이미지도 못 가져 옵니다.


이걸 매번 처리 할때 마다 같은 함수 쓰고 있었는데요




https://github.com/tajchert/Nammu


위 사이트에 가서 gradle 추가 하고 설치 하면 복잡한 거 필요 없고

이것만 있으면 


안드로이드 6.0 이상 퍼미션은 금방 해결이 된다.


final PermissionCallback permissionContactsCallback = new PermissionCallback() {
@Override public void permissionGranted() {
boolean hasAccess = Tools.accessContacts(MainActivity.this);
Toast.makeText(MainActivity.this, "Access granted = " + hasAccess, Toast.LENGTH_SHORT).show();
}
@Override public void permissionRefused() {
boolean hasAccess = Tools.accessContacts(MainActivity.this);
Toast.makeText(MainActivity.this, "Access granted = " + hasAccess, Toast.LENGTH_SHORT).show();
}
};

정의를 먼저 하고


if (Nammu.checkPermission(Manifest.permission.READ_CONTACTS)) {
//We have a permission, easy peasy
boolean hasAccess = Tools.accessContacts(this);
Toast.makeText(this, "Access granted = " + hasAccess, Toast.LENGTH_SHORT).show();
} else {
//We do not own this permission
if (Nammu.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS)) {
//User already refused to give us this permission or removed it
//Now he/she can mark "never ask again" (sic!)
Snackbar.make(mLayout, "Here we explain user why we need to know his/her contacts.",
Snackbar.LENGTH_INDEFINITE).setAction("OK", new View.OnClickListener() {
@Override public void onClick(View view) {
Nammu.askForPermission(MainActivity.this, Manifest.permission.READ_CONTACTS,
permissionContactsCallback);
}
}).show();
} else {
//First time asking for permission
// or phone doesn't offer permission
// or user marked "never ask again"
Nammu.askForPermission(this, Manifest.permission.READ_CONTACTS, permissionContactsCallback);
}

}

이런식으로 클릭을 했을 때 바로 띄워 줄수도 있고

처음 시작 할때 미리 체크 할 수도 있습니다..


permissionContactsCallback 이 함수에서 체크 했나 안 했나를 리턴 받아서 처리 하면 됩니다.





반응형