一.WIFI狀態的擷取和更改
適用於 SDK1.0 , SDK1.5
1.擷取WIFI狀態
方法1:通過WifiManager進行操作
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiManager.isWifiEnabled();
要求許可權:android.permission.ACCESS_WIFI_STATE
方法2:通過Settings.System進行操作
Settings.System.getInt(getContentResolver(), Settings.System.WIFI_ON);
返回 “0″ “1″
2.通過 WifiManager 更改WIFI狀態
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled( false );
wifiManager.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狀態的方法依然沒有改變(擷取方法中做了封裝)
Settings.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)
Settings.System.putString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED, "network");
Settings.System.putString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED, "gps");
SDK1.5報錯說:location_providers_allowed has been moved to secure table。
好,那我們換另外方法試試:我不修改system表,我直接修改secure表總可以了吧!那我們就來試試~!將以上方法改為
Settings.secure.putString(getContentResolver(), Settings.secure.LOCATION_PROVIDERS_ALLOWED, "network");
Settings.secure.putString(getContentResolver(), Settings.secure.LOCATION_PROVIDERS_ALLOWED, "gps");
然後加上許可權 android.permission.WRITE_SECURES.
結果咋樣?結果沒有報錯,卻提示 android.permission.WRITE_SECURES 為被授予!android對secure表做了嚴格的許可權控制,一般的程式休想去對她做update 和insert。悶了···這個問題擱淺了。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/muyu114/archive/2010/07/16/5736402.aspx