项目上需要获取手机当前GPS状态,开始获取到以为正常,后来发现有的小米手机通知栏那边关闭了GPS,手机的GPS并没有真正关闭。但是 我判断的却是关闭了,搜索发现,少判断了一点
正确的应该是下面这样,记录下
public static boolean checkGPSIsOpen(Context activity) { boolean isOpen; LocationManager locationManager = (LocationManager) activity .getSystemService(Context.LOCATION_SERVICE); //通过GPS卫星定位,定位级别可以精确到街(通过24颗卫星定位,在室外和空旷的地方定位准确、速度快) boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); //通过WLAN或移动网络(3G/2G)确定的位置(也称作AGPS,辅助GPS定位。主要用于在室内或遮盖物(建筑群或茂密的深林等)密集的地方定位) //部分小米手机顶部通知栏的GPS开关关闭,network仍然是true,设置项里的GPS开关其实是开的 //只有两个GPS开关和AGPS开关都是关的情况才算是关,有一个开就认为是开的 boolean agps = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (gps || agps) { isOpen = true; } else { isOpen = false; } return isOpen; }