2017-06-29 64 views
-1

我編寫了一個應用程序,可以檢測到無線網絡,當我在網絡上按下時,它會提供有關該網絡的詳細信息。現在的問題是,我3年前編寫它時,Android KitKat不需要用戶的彈出權限,現在當我在Android N上運行它時,我按下掃描它既不掃描也不給我彈出權限。舊應用程序無法在Android N上獲得WiFi掃描結果

我沒有編程android很長一段時間,我不知道Android應用程序編碼要求的變化。任何想法爲什麼發生這種情況

由應用程序使用當前的權限:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
+0

問題是? – Selvin

+0

爲什麼它不掃描也不給我彈出權限 –

+0

沒有[mcve],任何人都很難幫助你。 – CommonsWare

回答

2

爲了得到棉花糖無線掃描結果後來,your app will need to request the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission和定位模式設置必須啓用爲好。

documentation for getScanResults()

的接入點在最近一次掃描中列表。一個應用程序必須 爲了 保持ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION權限得到有效的結果

這一修改主要是由於該位置可以從無線掃描結果來確定的事實。

作爲一種額外的安全措施,應用程序現在需要請求位置權限才能查看WiFi掃描結果,此外,如果用戶將其位置模式設置爲關閉狀態,則在後臺運行時,應用程序無法看到掃描結果。

因此,在最低限度,在ACCESS_COARSE_LOCATION允許添加到您的清單,以獲得無線掃描結果:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

如果你把你的目標API版本比23低,你不能要求權限在運行時。在這種情況下,您的應用將在安裝時繼續請求所有權限。

如果您更新應用程序以定位API版本23或更高版本,則需要在運行時請求所有危險的權限。有關在運行時請求位置權限的示例,請參閱here

+0

感謝man it it解決了我的問題 –