android 6.0 이상 퍼미션 체크 로직
2019. 10. 7. 00:11ㆍIT & Programming
public class Login extends Activity {
// 멀티 퍼미션 지정
private String[] permissions = {
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CALL_PHONE, // 전화걸기 및 관리
Manifest.permission.WRITE_CONTACTS, // 주소록 액세스 권한
Manifest.permission.WRITE_EXTERNAL_STORAGE, // 기기, 사진, 미디어, 파일 엑세스 권한
Manifest.permission.RECEIVE_SMS, // 문자 수신
Manifest.permission.CAMERA
};
private static final int MULTIPLE_PERMISSIONS = 101;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
if (Build.VERSION.SDK_INT >= 23) { // 안드로이드 6.0 이상일 경우 퍼미션 체크
checkPermissions();
}
}
private boolean checkPermissions() {
int result;
List<String> permissionList = new ArrayList<>();
for (String pm : permissions) {
result = ContextCompat.checkSelfPermission(this, pm);
if (result != PackageManager.PERMISSION_GRANTED) {
permissionList.add(pm);
}
}
if (!permissionList.isEmpty()) {
ActivityCompat.requestPermissions(this, permissionList.toArray(new String[permissionList.size()]), MULTIPLE_PERMISSIONS);
return false;
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case MULTIPLE_PERMISSIONS: {
if (grantResults.length > 0) {
for (int i = 0; i < permissions.length; i++) {
if (permissions[i].equals(this.permissions[i])) {
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
showToast_PermissionDeny();
}
}
}
} else {
showToast_PermissionDeny();
}
return;
}
}
}
private void showToast_PermissionDeny() {
Toast.makeText(this, "권한 요청에 동의 해주셔야 이용 가능합니다. 설정에서 권한 허용 하시기 바랍니다.", Toast.LENGTH_SHORT).show();
finish();
}
}
반응형
'IT & Programming' 카테고리의 다른 글
jsp 학습 메모하기 (0) | 2021.03.14 |
---|---|
[계약서서식] 소프트웨어 용역계약서 양식 (4) | 2020.03.09 |
안드로이드 반투명 효과 주기 (0) | 2019.01.10 |
안드로이드 액티비티 라이프 사이클 (0) | 2019.01.07 |
안드로이드 최신폰 WifiMac Address 가져오기 (0) | 2018.12.17 |