-문제발생-
구 버전 프로젝트를 리뉴얼하는 업무를 맡으며 진행중,
테스트과정에서는 문제가 없었으나, 특정 안드로이드 기기로 수행 시 앱이 실행후 바로 종료되는 이슈발생
-원인-
로그와, 코드, 구글링결과
안드로이드 13버전 이후 파일 권한요청을 받는 방법이 바뀌었음
참조(https://developer.android.com/about/versions/13/behavior-changes-13?hl=ko)
READ_EXTERNAL_STORAGE 대신 분배가 더 세분화되어
READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO 로 세분화되었다
-해결과정-
1. 기존소스코드에 안드로이드 버전을 체크한 뒤, 분기를 만들어 각 권한허용절차를 다르게 설정
2. AndroidManifest 파일에 권한허용 uses permission내용추가
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
3. 코드상 안드로이드 버전을 확인 후 버전에따라 분기처리 실행
string[] permission_etc = {
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.CAMERA",
"android.permission.RECORD_AUDIO" };
string[] permission_13_up = {
"android.permission.READ_MEDIA_IMAGES",
"android.permission.READ_MEDIA_VIDEO",
"android.permission.READ_MEDIA_AUDIO",
"android.permission.CAMERA",
"android.permission.RECORD_AUDIO" };
string[] curPermission;
if (Application.platform == RuntimePlatform.Android)
{
AndroidJavaClass buildVersion = new AndroidJavaClass("android.os.Build$VERSION");
sdkVersion = buildVersion.GetStatic<int>("SDK_INT");
if (sdkVersion >= 33)
{
curPermission = permission_13_up;
}
else
{
curPermission = permission_etc;
}
}
4. 이후 permission 얻기 실행
if (!CheckPermissions())
{
AndroidPermissionsManager.RequestPermission(curPermission, new AndroidPermissionCallback(
grantedPermission =>
{
//when granted
checkCount++;
Debug.Log("grant : " + curPermission[checkCount - 1]);
Debug.Log("Count : " + checkCount);
},
deniedPermission =>
{
//when denied
Debug.Log("denied : " + curPermission[checkCount]);
}));
CheckPermissions();
}
private bool CheckPermissions()
{
if (Application.platform != RuntimePlatform.Android)
{
return true;
}
for (int i = 0; i < temp.Length; i++)
{
if (!AndroidPermissionsManager.IsPermissionGranted(temp[i]))
{
return false;
}
}
return true;
}
'개발 > Unity' 카테고리의 다른 글
| [Unity] 프로젝트 소스코드 관련 간단 검토자료 (0) | 2025.08.13 |
|---|---|
| [Unity] 현재 프로젝트문제점, 개선고려점 정리 (1) | 2025.08.13 |
| [Unity] Merge-Is-Mine 맵 생성 시스템 (0) | 2025.08.03 |
| [Unity] ios 빌드시 xcworkspace가 생성안될때 (0) | 2024.04.18 |
| [Unity] ios 빌드 오류 , Undefined symbol: _OBJC_CLASS_$_WKWebView 관련 (0) | 2024.03.25 |