2016-01-22 81 views
1

我有一個Android應用程序訪問設備的位置,然後查詢WiFi參數。一切都通常順利。在Android 6上禁用位置權限似乎會影響WiFi參數查詢

如果我關閉應用的位置權限(就像我在Android 6中可以做的那樣),我不再獲取設備的位置(如預期的那樣)。不過,當我嘗試查詢WiFi參數時,我也會得到一個修改的WiFiInfo對象。特別是:

  • getScanResults()通常會列出所有可用的網絡,但是在關閉位置的情況下,它只包含設備所連接的網絡。
  • 如果我查看找到的網絡的功能,該字符串是空的。通常它包含無線加密信息等信息。

有沒有其他人看過這個?我已經使用相同的代碼對位置權限在2個不同設備上開啓/關閉進行了驗證。有什麼想法發生了什麼?

更新:在進一步審查時,我說getScanResults()返回關於設備連接到的AP的信息時出錯。它實際上返回一個空的列表。這將支持這樣的想法,即如果Location權限被拒絕,Google不希望我們獲得有關本地AP的任何信息。

+0

您的目標是API 23嗎? – kcoppock

+0

從mainfest: <使用-SDK 機器人:的minSdkVersion = 「11」 機器人:targetSdkVersion = 「19」/> 爲什麼要此事? –

+1

好的,我剛剛讀了一些東西,並理解了這個問題。如果您的目標是API 23,那麼您在安裝時就不會獲得所請求的權限,並且必須在運行時動態詢問它們。這不是我所處的情況 - 我的目標是一個較舊的API,問題在於用戶明確拒絕了我剛纔相信的東西。 –

回答

1

基於WiFi的位置基本上是查找已知AP的巨型數據庫中的WiFi接入點信息以及發現設備位置的位置。當您啓用WiFi或網絡位置時,這就是Google,SkyHook和Apple所使用的服務。

我懷疑Google試圖阻止應用程序訪問禁用位置時可從哪個位置導出的信息。他們之前曾經阻止訪問Google Play位置服務,但這不會阻止設備執行掃描,收集將發送給Google的相同數據,並將此數據發送到其他服務以發現位置。

+0

這沒有任何意義。我能夠獲取我連接到的AP但不是其他人的信息。我只能查找該AP的信息。而且,他們阻止我瞭解AP是否使用了我需要的WEP/WPA/WPA2。我們可以驗證這是否真的是谷歌正在做的事情? –

相關問題