티스토리 뷰


* 이 글은 개발자를 위한 글입니다.
→ 일반 사용자라면 "블루라이트 어플" 등 화면 제일 위에 있는 앱을 종료한 뒤 다시 권한을 요청해보세요.

마시멜로우 이상의 안드로이드에서는 특정 기능을 사용하기 위해 사용자의 허가를 받아야만 합니다.
근데 가끔 이 허가를 받으려고 하는데 "화면 오버레이 감지됨"이라는 문구가 뜨면서 허가가 안되는 경우가 있죠.

인터넷을 찾아 봐도 정확히 어떤 것이 원인인지에 대한 얘기는 별로 없더라구요.

"화면 오버레이 감지됨"은 말 그대로 화면을 다른 무언가가 덮으려고 한다는 의미입니다.
여기서 덮는다는 것은 꼭 화면 전체가 아니라 일부만 덮어도 덮는다는 얘기입니다.

안드로이드에서 화면을 덮는 것이 뭐가 있을까요?
잠깐만 생각해봐도 쉽게 알 수 있는 것들입니다.

1. 항상 화면의 최상단에 띄워져 있는 어플리케이션
- 블루라이트 차단 앱, 화면 녹화/캡처 앱, 플로팅 아이콘(런처) 등 수도 없이 많죠.

근데 어플리케이션 말고도 화면을 덮는 것이 또 있습니다.

2. 바로 토스트입니다.


아시다시피 권한 허가를 받기 위한 창의 내용은 별도로 수정이 불가능합니다.
때문에 토스트 등을 통해 어떤 이유로 권한을 요청하는지에 대한 부가적인 설명을 적곤 하는데요,
토스트가 사라지지 않은 채로 권한 요청을 하게 되면 화면 오버레이가 발생합니다.

그럼 어떻게 해결해야 할까요?

1. 사용자가 최상단에 위치하는 앱을 잠시 끄도록 유도해야 합니다.
2번처럼 개발자 본인의 오류가 아니면 대부분 오버레이 문제는 이쪽에서 발생하죠.
블루라이트 등 최상단에 위치하는 앱이 권한 획득을 방해한다는 것을 알리고,
해당 기능을 끄도록 안내하는 것이 필요합니다.

(1-5. 설정에서 앱 설정을 변경합니다.)
시스템 설정의 앱 관리자 항목을 보면 "다른 앱 위에 표시되는 앱"항목이 있습니다.
여기에서 오버레이가 일어나고 있는 앱을 활성화 시켜주면 됩니다.
다만 이 방법은 사용자가 접근하기 어렵고 활성화가 안되는 경우가 많아 추천하고 싶진 않습니다.

2. 권한 요청과 안내 문구가 같이 나오지 않도록 합니다.
토스트를 사용하게 되면 위 사진처럼 권한 요청과 안내 문구가 동시에 나오게 됩니다.
따라서 다이얼로그와 같은 다른 방법으로 권한 요청에 따른 안내 메시지를 전달하는 것이 바람직합니다.
(다이얼로그가 끝난 뒤에 권한 요청을 한다거나 하는 방향으로 진행하시면 될 것 같네요)

그 외에도 다양한 방법들이 존재하겠지만,
화면을 가렸기 때문에 오버레이가 발생한다는 사실만 인지하고 계시면 될 것 같습니다.

도움이 되었으면 좋겠네요.

댓글
댓글쓰기 폼