zoukankan      html  css  js  c++  java
  • android获取/更改gps和WIFI状态

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

    最后无奈,只能提示用户手动开启gps功能。

  • 相关阅读:
    Shell 批量搜索关键词并保存结果到文件中(数组、循环)
    解决tensorflow的Session Exception问题
    解决h5py的FutureWarning问题
    【转】Ubuntu16.04安装WPS
    [Linux] 随机切分文件内容
    [Python] 动态函数调用(通过函数名)
    [Python] dict字典的浅复制与深复制
    基于sklearn进行文本向量化
    Asp.Net MVC SingleServiceResolver类剖析
    Asp.Net MVC 高级特性(附带源码剖析)
  • 原文地址:https://www.cnblogs.com/sky7034/p/2045167.html
Copyright © 2011-2022 走看看