项目需要,查找了很久的文件,起初用了公司的红米手机测试,一直不成功,getLastKnownLocation(provider)返回一直为空,后来偶然看到一篇文章说国内安卓手机是不支持android自带的定位API locationManager的。
国内安卓手机locationManager.getLastKnownLocation(locationProvider)为null,原因是国内的手机厂商对android系统进行了改动,将谷歌的服务包删除,上述结果就是讲网络定位服务包缺少的结果,最明显的就是谷歌地图无法定位,因为谷歌地图用的也是这套api,而其他百度、高德等实用自己的地图api包,所以依然可以使用,而使用谷歌原生系统的手机就不会有这个问题)
下面直接贴我试验成功的代码:
1、添加权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
2、使用Android自带的LocationManager获取地理位置信息
private void getLocation () {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//获取所有可用的位置提供器
List providers = locationManager.getProviders(true);
if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
//如果是Network
locationProvider = LocationManager.NETWORK_PROVIDER;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
/