指定 Android 13 (API 級別 33) 以上版本,並管理 Wi-Fi 連線的應用程式
應要求
NEARBY_WIFI_DEVICES
敬上
執行階段權限。這個
權限可讓您更輕鬆地證明應用程式能存取附近的 Wi-Fi 裝置;
舊版 Android 裝置上的應用程式必須宣告
ACCESS_FINE_LOCATION
敬上
權限。
權限是鄰近裝置群組的一部分
NEARBY_WIFI_DEVICES
權限是鄰近裝置的一部分
權限群組。在 Android 12 (API 級別 31) 中新增的群組也包括
具備藍牙和超寬頻的相關權限。當您要求
則會顯示一個
,並要求使用者核准您的應用程式存取鄰近裝置。
在系統設定中,使用者必須啟用及停用鄰近裝置
權限;例如,使用者無法停用 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
以便在應用程式中提供回溯相容性不過,
不會以其他方式仰賴
精確位置資訊,你可以:
將這項權限的 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:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
Wi-Fi 存取工作流程
圖 1 顯示執行裝置的 Wi-Fi 存取工作流程
Android 13 以上版本 (適用於指定為目標版本的應用程式)
Android 13 以上版本。請注意,只要您
應用程式無法透過 Wi-Fi 裝置資訊取得實際位置資訊,您
不再需要宣告 ACCESS_FINE_LOCATION
權限:
圖 2 顯示執行裝置的 Wi-Fi 存取工作流程
12L 以下。請注意
ACCESS_FINE_LOCATION
權限。