아무리 사용자의 개인정보가 중요하지만 ㅠㅠ 개발자는 피곤해지네요. 안드로이드 6.0 이후 버전부터는 반듯이 권한 체크하는 코드가 필요해져 버렸어요. 또 언제 사용자가 권한을 해지할지 모르니, 해당권한을 사용하기전에는 무조건 권한이 승인되어 있는지 확인해야되구요. 귀찮지만 어쩔 수 없죠. 구현해야지요.
사용자 발신목록에 접근해야되는 코드를 예로 들어볼께요. 예전같으면 그냥 이거만 manifests 파일에 넣어주면 끝났는데, 지금은 안되요.
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
첫번째 구현해야되는코드는, 권한 있는지 체크하기
//------------------------------------------------
private int REQUEST_CALL_LOG = 1;
private Activity mainActivity = this;
//------------------------------------------------
int permissionCheck = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_CALL_LOG);
if (permissionCheck == PackageManager.PERMISSION_DENIED)
{
// 권한이 없는경우 권한 요청
ActivityCompat.requestPermissions(mainActivity,
new String[]{Manifest.permission.READ_CALL_LOG},
REQUEST_CALL_LOG);
}
else
{
// 권한이 있으면 바로 전화목록 바로 접근
}
요런게 필요해요. 또 권한이 없는 경우에 사용자로부터 권한을 요구하는 창을열고 그 결과값을 입력받아서 처리하는 후처리과정도 필요하구요.
두번째 필요한 기능, 사용자로부터 받은 Permission 요구 결과값을 반영시키기
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST_CALL_LOG:
for (int i = 0; i < permissions.length; i++) {
String permission = permissions[i];
int grantResult = grantResults[i];
if (permission.equals(Manifest.permission.READ_CALL_LOG))
{
if (grantResult == PackageManager.PERMISSION_GRANTED)
{
// READ_CALL_LOG 권한 획득 성공
}
}
}
}
}
이렇게 두가지 루틴을 추가해줘야하니 좀 많이 귀찮아졌네요.
귀찮다고 업데이트를 미뤘더니만 예전에 만들었던 앱에서 문제가 생겨서 안되더라구요, 그래서 급히 수정해서 올렸답니다. 저 처럼 미루지 말고 바뀐 권한 체크 빨리 빨리 수정해서 올리도록 하자구요.
'개발 > 앱' 카테고리의 다른 글
단기 기억력(암기력) 향상 프로젝트 리멤버 앱 (Remember) (0) | 2017.08.12 |
---|---|
Ready? 머리쥐나는 게임 (0) | 2017.08.11 |
유니티로 5분만에 리더보드 점수 랭킹 시스템 적용방법 (안드로이드) (3) | 2017.07.22 |
인디게임 몬스터 슬래시 (괴물이 쳐들어왔다) (0) | 2017.07.21 |
Master of Jump (점프의 달인 유니티 게임) (0) | 2017.06.27 |
안드로이드 전화 수신 발신 이력조회 코드 (Android CallLog) (0) | 2017.06.24 |
안드로이드 스튜디오 코드정렬 단축키 (android studio) (0) | 2017.06.23 |
SPSS 사용법 #3 변수값 직접 설정해보기 (2) | 2017.06.22 |
최근댓글