IT/Android

[구글 플레이스토어] QUERY_ALL_PACKAGES 권한 이슈 해결

토마토조아 2023. 1. 25. 15:36
728x90

안드로이드 모바일 앱을 운영하다 보면 QUERY_ALL_PACKAGES 권한으로 인해 앱이 게시중지 될 수 있다는 메시지를 받을때가 있습니다.

해당 권한을 간단히 설명하면, 스마트폰에 설치된 모든 앱의 패키지명을 쿼리(질의요청)한다는 의미이다.

리턴은 스마트폰에 설치된 패키지명 리스트를 알 수 있다. But!!! 구글은 스마트폰에 설치된 모바일 앱의 패키지명 또한 민감정보로 분류함에 따라 꼭 필요한 경우가 아니면 본 권한을 제한하도록 정책을 변경하였다.

또한 QUERY_ALL_PACKAGES 권한은 Android 11 부터 적용되며, SDK는 30 이상을 타겟팅 해야 사용할 수 있다.

본 권한이 허용되는 용도는 다음과 같다.

구분 설명
허용 기기 검색, 바이러스 백신 앱, 파일 관리자, 브라우저 등
비허용 허용과 예외에서 설명하는 것 외의 모든 목적인 경우, 특히 판매를 위한 데이터 수집, 광고 목적 등
예외 금융 거래 기능(예: 전용 은행, 전용 디지털 지갑)과 관련된 보안 관련 목적으로 사용되는 경우

최근 내가 운영하는 앱도 QUERY_ALL_PACKAGES 권한이 포함되어 있어서 해당 권한을 삭제하지 않으면 앱이 내려간다는 무시무시한 메시지를 받아 부랴부랴 처리를 하였다.

음.. 경고를 해결하지 않으면 큰일난다는 메시지 ㄷㄷㄷㄷㄷㄷ;;;;

 

 

해결 방법

1. 앱의 Manifest에 아래의 코드가 포함되어 있는지 확인하고, 별도로 사용되는 곳이 없다면 아래 코드만 삭제 후 재심사 진행.

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
    tools:ignore="QueryAllPackagesPermission" />

2. 아래 예시처럼 QUERY_ALL_PACKAGES 를 실제로 사용하는 경우
    허용 범위라면 구글에 의견서를 제출하도록 하고, 아니라면 다음과 같이 수정

<!-- 아래와 같이 queries 로 실제로 사용하는 경우라면 수정 필요 -->
<manifest package="com.example.game">
    <queries>
        <package android:name="com.example.store" />
        <package android:name="com.example.services" />
    </queries>
</manifest>

Manifest 에서 queries 부분을 삭제하고 코드로 명시적인 패키지명을 호출하도록 변경해야 한다.

// Manifest 에서 queries 부분을 모두 삭제 후 아래와 같이 명시적인 패키지명 호출로 변경
val intent = mContext.packageManager.getLaunchIntentForPackage("com.example.store")
startActivity(intent)

 

물론 본인이 개발/운영하는 앱이 허용 범주라면 구글에 잘 소명하면 되겠고, 아니라면 본 글에서 설명한 것과 같이 무조건 수정이 필요하다.

 

출처.

 

 

폭넓은 패키지(앱) 가시성(QUERY_ALL_PACKAGES) 권한 사용 - Play Console 고객센터

도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요

support.google.com

 

 

패키지 공개 상태 요구사항 선언  |  Android 개발자  |  Android Developers

패키지 공개 상태 요구사항 선언 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱을 만들 때는 앱이 상호작용해야 하는 기기의 다른 앱을 고려하는 것이

developer.android.com

 

728x90