문제
유니티에서 권한 요청을 하고 나서 수락을 하면 화면이 멈춘다.
원인
문제가 발생했을 때 떠놓은 로그다.
음성 녹음 권한을 물어본다. -> Activity pause timeout for ActivityRecord
권한을 물어보는 창에서 잠시 기다리면
Timeout while trying to puase the Unity Engine.이 뜬다. 아마 유니티 엔진이 멈춘 것 같다.
아마 권한 요청을 하면서 잠시 유니티를 멈춘 것 같은데 수락을 해도 아무 로그가 나오지 않고 그 상태에서 멈춰버린다.
해결
안드로이드 권한을 런타임 중에 획득할 수 있도록 하는 에셋을 이용해서 해결
https://assetstore.unity.com/packages/tools/integration/android-runtime-permissions-117803
필요한 것 3가지
1. android manifest 설정
/Plugins/Android/AndroidManifest.xml
파일에 application 태그 안에 <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" /> 를 추가해준다.
위의 설정으로 유니티에서 자체적으로 권한을 요청하지 않도록 설정한다.
2. 필요한 권한 코드 확인
아마 AndroidManifest.xml파일에 필요한 권한이 쓰여있을 것이다.
필요한 권한 코드를 확인해서 기록해놓는다.
3. 권한 획득하는 소스코드 작성
나 같은 경우는 게임을 시작할 때 권한을 요청하고 권한 습득하면 화면을 넘어가도록 해놨다.
더 자세한 튜토리얼이 궁금하다면 에셋의 깃 설명서를 참고하도록 하자.
https://github.com/yasirkula/UnityAndroidRuntimePermissions