반응형
permission 물어보기위한 공통 사항
public static final String[] permissionList = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_PHONE_STATE};
public static final int MY_PERMISSIONS_REQUEST_READ_PHONE_STATE = 200;
- Common이라는 class안에 저장해서 쓰고있습니다. 아래도 자주 등장하니 참고해 주세요
- permissionList에 원하는 퍼미션을 넣어서 사용하면 됩니다.
permission 물어보기
if (PermissionUtil.haveAllpermission(IntroActivity.this,Common.permissionList)){
// 모든 퍼미션 허용
}
else{
// 퍼미션 하나로도 허용 안함
ActivityCompat.requestPermissions(mactivity,Common.permissionList,Common.MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
}
- PermissionUtil에 haveAllpermission 펑션을 이용해 체크한다.
permission 결과 받기 -> onRequestPermissionsResult
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//region 요청 코드가 PERMISSIONS_REQUEST_CODE 이고,
// 요청한 퍼미션 개수만큼 수신되었다면
if ( requestCode == Common.MY_PERMISSIONS_REQUEST_READ_PHONE_STATE &&
grantResults.length == Common.permissionList.length) {
boolean check_result = true;
// 모든 퍼미션을 허용했는지 체크합니다.
for (int result : grantResults) {
if (result != PackageManager.PERMISSION_GRANTED) {
check_result = false;
break;
}
}
//허용
if ( check_result ) {
//허용했을때 로직
}
//거부 ,재거부
else {
if (PermissionUtil.recheckPermission(this,Common.permissionList)){
//거부 눌렀을 때 로직
}
else{
//재거부 눌렀을 때 로직
}
}
}
//end region
}
- onRequestPermissionsResult에서 결과를 받아 허용,거부,재거부일때 진행되는 로직을 설정해줍니다. 여기까지 하시면 몇가지가 안될것입니다.
-PermissionUtil class가 없는데 이제 만들러 가봅시다.
permission Util 만들기
public class PermissionUtil {
/*
* true : all permission granted
* false : some permission deni
* */
public static boolean haveAllpermission(Context c , String[] s){
boolean ispms = true;
for (String pms : s ){
if (ContextCompat.checkSelfPermission(c, pms) != PackageManager.PERMISSION_GRANTED ) {
ispms = false;
break;
}
}
return ispms;
}
/*
* true : 사용자가 거부만 선택한 경우에는 앱을 다시 실행하여 허용을 선택하면 앱을 사용할 수 있습니다.
* false : “다시 묻지 않음”을 사용자가 체크하고 거부를 선택한 경우에는 설정(앱 정보)에서 퍼미션을 허용해야 앱을 사용할 수 있습니다.
* */
public static boolean recheckPermission (Activity activity ,String[] permissions){
boolean isrpms = false;
for (String s : permissions){
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, s)){
isrpms = true;
break;
}
}
return isrpms;
}
}
- haveAllPermission은 모든 퍼미션들이 허용상태일땐 true를 아닐경우 false를 반환합니다.
- recheckPermission은 거부만 눌럿을때 true, 재거부를 눌럿을때 false를 반환합니다.
- 만들고보니 메소드 이름이 이상해서 바꾸실분들은 바꿔주세요 .. ㅋㅋㅋ
반응형
'AOS' 카테고리의 다른 글
(안드로이드) interface 로 activity기능 fragment에서 사용하기 (0) | 2020.01.14 |
---|---|
(안드로이드) 듀얼심일 경우 처리 (0) | 2020.01.09 |
(안드로이드) HttpsURLConnection 그리고 AsyncTask .. (0) | 2020.01.02 |
[안드로이드] 백그라운드 체크하기 (0) | 2019.12.30 |
[안드로이드]webview 관련정리 (0) | 2019.12.23 |