근처 Wi-Fi 기기에 액세스할 수 있는 권한 요청

Android 13 (API 수준 33) 이상을 타겟팅하고 Wi-Fi 연결을 관리하는 앱 포드가 NEARBY_WIFI_DEVICES 드림 런타임 권한 이 권한이 있는 경우 근처 Wi-Fi 기기에 대한 앱의 액세스를 더 쉽게 정당화할 수 있습니다. 이전 버전의 Android에서는 이러한 앱이 ACCESS_FINE_LOCATION 드림 권한을 부여할 수 있습니다.

권한은 근처 기기 그룹에 속해 있습니다

NEARBY_WIFI_DEVICES 권한은 근처 기기 권한 그룹의 일부입니다. Android 12(API 수준 31)에서 추가된 이 그룹에는 블루투스와 초광대역 관련 권한도 포함되어 있습니다. Google에서 여러 개의 권한이 조합되어 있는 경우 시스템에서 하나의 앱만 런타임 대화상자에서 근처 기기에 대한 앱의 액세스를 승인하도록 사용자에게 요청합니다. 사용자는 시스템 설정에서 근처 기기를 사용 설정 및 사용 중지해야 합니다. 권한을 부여할 수 있습니다. 예를 들어 사용자는 Wi-Fi 액세스를 사용 중지할 수는 없지만 특정 앱에 블루투스 액세스가 사용 설정되어 있어야 합니다.

앱이 물리적 위치를 얻지 않는다고 강력하게 어설션합니다

Android 13 이상을 타겟팅하는 경우 앱이 Wi-Fi API에서 위치 정보를 가져옵니다. 그렇지 않다면 어설션을 만듭니다 이 어설션을 만들려면 다음 코드 스니펫과 같이 앱의 매니페스트 파일에서 usesPermissionFlags 속성을 neverForLocation으로 설정합니다. 이 프로세스는 블루투스 기기 정보가 위치에 사용되지 않는다고 어설션할 때 실행하는 프로세스와 유사합니다.

<manifest ...>
    <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
                     android:usesPermissionFlags="neverForLocation" />
    <application ...>
        ...
    </application>
</manifest>

이전 버전 및 일부 API에 위치 정보 액세스 권한 필요

일부 Wi-Fi API에는 ACCESS_FINE_LOCATION 권한이 필요합니다. 앱이 Android 13 이상을 타겟팅함 예를 들면 다음과 같습니다. WifiManager 클래스에서 메서드를 사용합니다.

또한 NEARBY_WIFI_DEVICES 권한은 Android 13 이상에서는 ACCESS_FINE_LOCATION 을 사용하여 앱에 이전 버전과의 호환성을 제공합니다. 그러나 앱이 다른 방식으로 Kubernetes에 정확한 위치 정보를 사용하여 다음 그림과 같이 이 권한의 최대 SDK 버전을 32로 설정하세요. 다음 코드 스니펫을 사용하세요.

<manifest ...>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
                     android:maxSdkVersion="32" />
    <application ...>
        ...
    </application>
</manifest>

권한이 필요한 API 확인

앱이 Android 13 이상을 타겟팅한다면 NEARBY_WIFI_DEVICES 권한을 선언하여 다음 Wi-Fi API를 호출해야 합니다.

Wi-Fi 액세스 워크플로

그림 1은 Android 13 이상(앱의 경우) Android 13 이상 앱이 Wi-Fi 기기 정보에서 물리적 위치를 얻지 않는다고 어설션하는 한 ACCESS_FINE_LOCATION 권한을 더 이상 선언할 필요가 없습니다.

그림 1. 플로 차트 앱이 Android 13 (API 수준 33) 이상을 타겟팅하는지 확인하기 Wi-Fi 정보에 액세스할 수 있습니다.

그림 2는 12L 이하 ACCESS_FINE_LOCATION 권한 의존도를 확인합니다.

그림 2. 플로 차트 12L (API 수준 32) 이하를 타겟팅하는 앱인지 확인 Wi-Fi 정보에 액세스할 수 있습니다.