hoony's web study

728x90
반응형

Android 13 권한


- 알림

Android 12 까지는 앱 진입 시, 기본적으로 알림이 허용이었습니다.

하지만, Android 13 부터는 알림의 기본 옵션이 차단이며 이를 허용하기 위해서는

별도로 권한을 요청 해야합니다.

또한 app/build.gradle 에서 targetSdkVersion을 33 미만으로 설정해둘경우,

Android13 에서는 알림에 대한 권한 요청이 이루어지지 않으므로,

targetSdkVersion을 어쩔 수 없이 올리게 되는 상황이 온거같습니다.

[AndroidManifest.xml]

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" android:minSdkVersion="33"/>

 

위와 같이, POST_NOFICATIONS 권한을 AndroidManifest에 추가해주도록 합니다.

 

- 스토리지 

이전엔 스토리지에 대한 권한을 READ_EXTERNAL_STORAGE 로써, 요청하였지만

이 또한, Android 13 에선 아래와 같이 세분화되었습니다.

미디어 유형 요청 권한
이미지 및 사진 READ_MEDIA_IMAGES
동영상 READ_MEDIA_VIDEO
오디오 READ_MEDIA_AUDIO

 

이를 대비

해 AndroidManifest.xml 또한 변경해주도록 합니다.

[AndroidManifest.xml]

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" android:minSdkVersion="33"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" android:minSdkVersion="33"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" android:minSdkVersion="33"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" android:minSdkVersion="33"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>

 

이후, Activity에서 아래와 같이 permission을 요청해주는 함수를 작성해주었습니다.

public boolean checkPermission()
    {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

            String[] permissions = null;
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                permissions = new String[]{Manifest.permission.READ_PHONE_NUMBERS,
                        Manifest.permission.CAMERA, Manifest.permission.MANAGE_EXTERNAL_STORAGE, Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.READ_MEDIA_VIDEO, Manifest.permission.READ_MEDIA_AUDIO, Manifest.permission.POST_NOTIFICATIONS};
            } else {
                permissions = new String[]{Manifest.permission.READ_PHONE_STATE,
                        Manifest.permission.CAMERA, permission.MANAGE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
            }

            List<String> denied_permissions = new ArrayList<String>();
            for (String perm : permissions) {
                if (ActivityCompat.checkSelfPermission(this, perm)
                        != PackageManager.PERMISSION_GRANTED)
                    denied_permissions.add(perm);
            }

            if(denied_permissions.size() > 0){
                String [] deniedPerms = denied_permissions.toArray(new String[denied_permissions.size()]);
                ActivityCompat.requestPermissions(this, deniedPerms, Config.REQCODE_PERMISSION);
                return false;
            }
        }
        return true;
    }

 

이상입니다. 감사합니다

728x90

'App 개발관련' 카테고리의 다른 글

효사랑 업소안내 - 강남구 앱 출시  (0) 2021.07.01
수소충전소 안내앱 출시  (0) 2021.05.28

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading