android獲取/更改gps和WIFI狀態


一.WIFI狀態的獲取和更改

適用於 SDK1.0 , SDK1.5

1.獲取WIFI狀態

方法1:通過WifiManager進行操作

1WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);

2

3wifiManager.isWifiEnabled();

要求權限:android.permission.ACCESS_WIFI_STATE

方法2:通過Settings.System進行操作

1Settings.System.getInt(getContentResolver(), Settings.System.WIFI_ON);

返回 “0″ “1″

2.通過 WifiManager 更改WIFI狀態

1WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);

2wifiManager.setWifiEnabled( false);

3wifiManager.setWifiEnabled( true );

二.gps狀態的獲取和更改

android GPS 狀態的修改。但是SDK1.5之后就出現了很多詭異的地方,原來在SDK1.1以下的版本中開發的有關GPS開關的應用都出現了問題。

問題的根源:SDK1.5 把系統數據庫中GPS開關的閥值從 system 表移動到了secure 表。

擴展:

1、通過adb shell 進入系統文件系統,cd data/data/com.android.providers.settings/databases 。然后進入settings.db 數據庫中。輸入 .schema查看所有表結構,你會發現有system 和 secure 表。

2、GPS是由location_providers_allowed 來控制的。當記錄值為 location_providers_allowed|gps 表示僅GPS定位。(紅色標記處為:”network” 僅基站定位 ;“gps” 僅GPS定位 ; “network,gps” 基站、GPS都開放;” “ 關閉定位)

當然獲取GPS狀態的方法依然沒有改變(獲取方法中做了封裝)

1Settings.System.getString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED);

要在Activity或者service中運行。當然別忘記了權限要求:android.permission.WRITE_SETTINGS

返回String :”network” 僅基站定位 ;“gps” 僅GPS定位 ; “network,gps” 基站、GPS都開放;” “ 關閉定位

修改的時候出漏子了!SDK1.0中的方法可用,但在SDK1.5中報錯:(當然,權限還是要加:android.permission.WRITE_SETTINGS)

1Settings.System.putString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED, "network");

2

3Settings.System.putString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED, "gps");

SDK1.5報錯說:location_providers_allowed has been moved to secure table。

好,那我們換另外方法試試:我不修改system表,我直接修改secure表總可以了吧!那我們就來試試~!將以上方法改為

1Settings.secure.putString(getContentResolver(), Settings.secure.LOCATION_PROVIDERS_ALLOWED, "network");

2

3Settings.secure.putString(getContentResolver(), Settings.secure.LOCATION_PROVIDERS_ALLOWED, "gps");

然后加上權限 android.permission.WRITE_SECURES.

結果咋樣?結果沒有報錯,卻提示 android.permission.WRITE_SECURES 為被授予!android對secure表做了嚴格的權限控制,一般的程序休想去對她做update 和insert。

最后無奈,只能提示用戶手動開啟gps功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM