android GPS定位,基站定位,WIFI定位開關的控制

來源:互聯網
上載者:User

一.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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.