6.0을 지원하지 않는 어플을 6.0 단말기에서 실행시 WindowManager 기능이 안되는 버그 질문입니다.


현재 6.0을 지원하지 않는 제품이고 WindowManager를 통해 한 화면을 최상단에 그리고 있습니다. 이 제품을 6.0버전 단말기에서 사용시 문제가 발생하였습니다.

  1. 6.0을 지원하지 않는 제품이기에 빌드나 타켓을 6.0으로 줄 수 없습니다. 권한관리부분의 버그인지 SYSTEM_ALERT_WINDOW 권한을 메니페스트에 줬고 "다른 앱 위에 그리기" 설정 화면에서 체크가 되어 있음에도 한번 풀었다가 체크해줘야지 정상동작합니다.

  2. 1번으로 인해 윈도우 매니져로 그려지지 않네요. 6.0을 지원하지 않기에 6.0 api에서 지원하는 권한 체크 함수를 사용할 수 없고, 이전버전에 있는 권한 체크 api에서는 "다른 앱 위에 그리기" 권한이 체크가 안되어 있어도 참으로 나옵니다.(6.0 이전 권한체크 api는 매니페스트를 확인하는게 아닐까 생각되네요)

이 문제를 해결할 수 있는 좋은 방법이 있으면 조언 부탁드립니다. 코드의 변경도 좋고 아예 새로운 아이디어도 좋습니다.

감사합니다.

  • 2016년 08월 08일에 작성됨
    안드로이드 개발자

조회수 200


1 답변


좋아요
0
싫어요
채택취소하기

Stackoveflow에 비슷한 현상으로 올라온 글이 있는데 답변은 없네요.

Target API를 6.0으로 올리지 못하는 상황이라면 기능을 제한적으로 지원할 수 밖에 없을 것 같습니다. 또한 올려주신 2번 현상에서 "다른 앱 그리기" 권한이 항상 True가 나온다고 하셨는데요. 아래 링크의 댓글 중 Exception을 활용한 방법으로 2번 문제를 우회적으로 해결하시길 추천드립니다.

Get the WindowManager and add/remove an invisible view: Successful -> Permission is granted. Exception: Permission is not granted.

2번이 해결된다면 (설정이 꺼져있다고 판단될 때) 다음 그림처럼 사용자에게 해당 설정을 활성화하라는 안내 푸시를 보여주고 "다른 앱 위에 그리기" 설정으로 진입하게 만드는 것이 괜찮은 대안으로 보입니다. (사실 가장 좋은 방법은 6.0을 공식 지원하는 것이겠죠)

이미지

"다른 앱 위에 그리기" 설정 진입 방법은 아래 링크를 참고하세요.

푸시를 보여주고, 설정으로 이동하는 전반적인 흐름은 아래 링크를 참고했습니다. 읽어보시면 도움이 될 것 같아요.


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close