마시멜로우 에서 퍼미션관련 헷갈립니다
하나의 앱에 파일탐색기엑티비티와 콘택트접근엑티비티가
구현되어있는데
퍼미션을 주는게 내생각대로 잘안됩니다
String[] PERMISSIONS = new String[] {Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS, Manifest.permission.GET_ACCOUNTS};
public boolean lacksPermissions(String... permissions) {
for (String permission : permissions) {
if (lacksPermission(permission)) {
return true;
}
}
return false;
}
private boolean lacksPermission(String permission) {
if(ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED){
//Manifest.permission.READ_CALENDAR이 접근 승낙 상태 일때
return true;
}else{
//Manifest.permission.READ_CALENDAR이 접근 거절 상태 일때
if(ActivityCompat.shouldShowRequestPermissionRationale((Activity)context, permission)){
//최초 접속이 아니고, 사용자가 다시 보지 않기에 체크를 하지 않고, 거절만 누른경우
//만약 사용자가 다시 보지 않기에 체크를 했을 경우엔 권한 설정 다이얼로그가 뜨지 않는다.
//사용자에게 접근권한 설정을 요구하는 다이얼로그를 띄운다.
ActivityCompat.requestPermissions((Activity)context,new String[]{permission},0);
}else{
//최초 접속시, 사용자가 다시 보지 않기에 체크를 했을 경우
return false;
}
}
//return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_DENIED;
return true;
}
처음 콘택트 엑티비티에서 위코드를 실행하면
ActivityCompat.requestPermissions
코드가 실행되어 퍼미션창이 뜨고 사용자의선택을 기다리게 합니다
그리고 허용버튼을 누르면 이상없이 동작하는데
그리고나서 파일탐색기 엑티비티를 실행시키면
위코드가 동작하지를 않습니다
String[] PERMISSIONS = new String[] {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION};
ActivityCompat.requestPermissions
퍼미션 창이뜨지를 않고 그냥넘어가서 에러가 나게됩니다
한참 헤메다가 앱을 지우고 다시실행하니
콘택트엑티비티도 마찬가지 상태로 됩니다
위코드가 잘못된건가요?
앱을지우면 퍼미션정보도 지워져야되는것 아닌지???
하나의 엑티비티에 특정퍼미션을 설정하면
다른엑티비티에서는 다른퍼미션에서 설정한 퍼미션이 영향을 미치는건지
궁금합니다
조언부탁합니다