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;
}
이상입니다. 감사합니다
효사랑 업소안내 - 강남구 앱 출시 (0) | 2021.07.01 |
---|---|
수소충전소 안내앱 출시 (0) | 2021.05.28 |