반응형
안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
안드로이드 api23이상이 되면서 퍼미션을 manifest에 선언하는 것이 아니라 동적으로 얻어야하는 것들이 생겼는데요.
동적으로 얻어야하는 리스트는 다음과 같습니다.
자세히 보려면
https://developer.android.com/guide/topics/security/permissions.html?hl=ko#normal-dangerous
다음은 동적으로 필요한 부분에서 권한 설정 여부를 뭍는 코드입니다.
public static final int MULTIPLE_PERMISSIONS = 10; // code you want.
// 원하는 권한을 배열로 넣어줍니다.
String[] permissions = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
private boolean checkPermissions() {
int result;
List<String> listPermissionsNeeded = new ArrayList<>();
for (String p : permissions) {
result = ContextCompat.checkSelfPermission(getActivity(), p);
if (result != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(p);
}
}
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(getActivity(),
listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]),
MULTIPLE_PERMISSIONS);
return false;
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case MULTIPLE_PERMISSIONS: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d("permission", "granted");
}
}
}
}
위 2개의 메서드는 실제로 권한 요청을 수행하는 메서드입니다.
마지막으로 권한 검사를 하고 싶은 곳에서
if (Build.VERSION.SDK_INT >= 23) {
checkPermissions();
}위처럼 사용하면 됩니다.
반응형
'안드로이드' 카테고리의 다른 글
안드로이드 액티비티 이동 시 값 전달 (Intent) putExtra(), getExtras() (0) | 2017.03.10 |
---|---|
안드로이드 버튼 터치 시 버튼 색상 변경 (0) | 2017.03.10 |
안드로이드 갤러리 사진가져오기 (2) | 2017.03.10 |
안드로이드 SQLite 회원가입과 로그인 확장 (11) | 2017.03.10 |
안드로이드 SQLite를 이용한 로그인 문제 해결 (0) | 2017.03.10 |