안드로이드

안드로이드 api 23이상 퍼미션 권한 주는 방법

알통몬_ 2017. 3. 10. 14:23
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

안드로이드 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();
}

위처럼 사용하면 됩니다.


반응형