方案一:没有加权限

<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"/>

方案二:(完整代码)


public class MainActivity extends AppCompatActivity {private static final String TAG = "MainActivity";private LocationManager locationManager;private String locationProvider;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);locationManager = (LocationManager) getSystemService(getApplicationContext().LOCATION_SERVICE);//下面注释的代码获取的location为null,所以采用Criteria的方式。/*List<String> providers = locationManager.getProviders(true);if (providers.contains(LocationManager.GPS_PROVIDER)) {//如果是GPSlocationProvider = LocationManager.GPS_PROVIDER;Log.d(TAG, "onCreate: gps=" + locationProvider);} else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {//如果是NetworklocationProvider = LocationManager.NETWORK_PROVIDER;Log.d(TAG, "onCreate: network=" + locationProvider);} else {Log.d(TAG, "onCreate: 没有可用的位置提供器");Toast.makeText(this,"没有可用的位置提供器",Toast.LENGTH_SHORT).show();return;}//获取Location,老是获取为空!所以用locationManager.getBestProvider(criteria, true);Location location = locationManager.getLastKnownLocation(locationProvider);*/Criteria criteria = new Criteria();criteria.setAccuracy(Criteria.ACCURACY_COARSE);//低精度,如果设置为高精度,依然获取不了location。criteria.setAltitudeRequired(false);//不要求海拔criteria.setBearingRequired(false);//不要求方位criteria.setCostAllowed(true);//允许有花费criteria.setPowerRequirement(Criteria.POWER_LOW);//低功耗//从可用的位置提供器中,匹配以上标准的最佳提供器locationProvider = locationManager.getBestProvider(criteria, true);if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {Log.d(TAG, "onCreate: 没有权限 ");return;}Location location = locationManager.getLastKnownLocation(locationProvider);Log.d(TAG, "onCreate: " + (location == null) + "..");if (location != null) {Log.d(TAG, "onCreate: location");//不为空,显示地理位置经纬度showLocation(location);}//监视地理位置变化locationManager.requestLocationUpdates(locationProvider, 0, 0, locationListener);}/*** LocationListern监听器* 参数:地理位置提供器、监听位置变化的时间间隔、位置变化的距离间隔、LocationListener监听器*/LocationListener locationListener = new LocationListener() {@Overridepublic void onStatusChanged(String provider, int status, Bundle arg2) {}@Overridepublic void onProviderEnabled(String provider) {Log.d(TAG, "onProviderEnabled: " + provider + ".." + Thread.currentThread().getName());}@Overridepublic void onProviderDisabled(String provider) {Log.d(TAG, "onProviderDisabled: " + provider + ".." + Thread.currentThread().getName());}@Overridepublic void onLocationChanged(Location location) {Log.d(TAG, "onLocationChanged: " + ".." + Thread.currentThread().getName());//如果位置发生变化,重新显示showLocation(location);}};private void showLocation(Location location) {Log.d(TAG,"定位成功------->"+"location------>经度为:" + location.getLatitude() + "\n纬度为" + location.getLongitude());}
}

locationManager.getLastKnownLocation(locationProvider);//地理位置获取为null的解决方案相关推荐

  1. IOS 根据地理位置获取坐标或根据坐标获取地理位置

    根据地理位置获取坐标: CLGeocoder * grader =[[CLGeocoder alloc]init]; [groder geocodeAddressString:@"要获取坐标 ...

  2. 微信小程序--地理位置获取、导航

    首先在app.json声引入 "permission": {"scope.userLocation": {"desc": "确认自 ...

  3. h5地理位置获取与多媒体

       h5地理位置获取与多媒体    1.地理位置获取        在h5当中有现成的关于获取到地理位置的方法window.navigator.geolocation,在h5中当用户同意地理位置获取 ...

  4. android 获取视频缩略图终极解决方案(ffmpeg)

    android 获取视频缩略图终极解决方案(ffmpeg) 参考文章: (1)android 获取视频缩略图终极解决方案(ffmpeg) (2)https://www.cnblogs.com/juka ...

  5. 签入在服务器上之后,别人获取了,在解决方案资源管理器中找不到。

    签入在服务器上之后,别人获取了,在解决方案资源管理器中找不到. 这个问题具体原因我也不太清楚,但是我找到了一个解决方案.直接在解决方案上右键,添加,添加现有项.把在解决方案资源管理器上看不见的选中,添 ...

  6. @Value取值为NULL的解决方案

    @Value取值为NULL的解决方案 参考文章: (1)@Value取值为NULL的解决方案 (2)https://www.cnblogs.com/jpfss/p/11322774.html (3)h ...

  7. 关于Redis集群模式下,使用mget通过keys批量获取value时的解决方案

    关于Redis集群模式下,使用mget通过keys批量获取value时的解决方案 今天在做项目的时候,需要使用到mget命令,通过一个批量的key去获取对应的value集合,但是取值的时候,报了这个错 ...

  8. PHP 跟据用户IP获取所在国家高效解决方案(GEOIP)

    最近项目中有一个需求统计访客数据,为了保证效率.前端尽量轻量化,仅将访客原始请求信息不作任何处理直接写入消息队列.后端计划任务服务器监听消息队列,解析 user agent, ip 地址,处理结果写入 ...

  9. 注册表键值明明存在OpenSubKey始终返回null,解决方案

    注册表键值明明存在OpenSubKey始终返回null,解决方案 参考文章: (1)注册表键值明明存在OpenSubKey始终返回null,解决方案 (2)https://www.cnblogs.co ...

最新文章

  1. if __name__ == __main__
  2. Android运行出现“java.io.IOException: 您的主机中的软件放弃了一个已建立的连接。”...
  3. 论文笔记:孪生神经网络(Siamese Network)
  4. python 之GUI设计:Entry组件
  5. boost::python::bases相关的测试程序
  6. java属于什么行业,吐血整理
  7. Hive分区和桶的概念
  8. 【转】Azure Logic App Demo
  9. csync2+sqlite实现数据的高效实时的增量备份
  10. 2020-10-01
  11. Android防止内存泄漏的八种方法(下)
  12. 2013 前瞻 + 技术牛
  13. 大数据查询平台有哪些?Hadoop数据查询组件分析
  14. 硬十在手,别无所求【2017.6.30版本】
  15. 【Python之numpy库】15.np.set_printoptions(suppress=True) 将数组科学计数法转化为浮点数
  16. 树莓派3B Qt+dht11读取温湿度并写入数据库202005(8)
  17. u盘重装系统详细教程
  18. java打印数组的连续非空子集_Apriori算法求数组的非空子集java代码
  19. 【备注接口】为什么那么多人开网店不赚钱?原因如下
  20. 【转】大学四年因为知道了这32个网站,我成了别人眼中的大神!

热门文章

  1. 关于UBNT网桥真实吞吐量
  2. QML中的组件——QML
  3. MYSQL 数据库基础(三 流程函数的学习,多行函数相当于统计计算等等、group by的使用、goup by衍生出的having、排序关键字order by、升序ASC、降序DESC、模糊查询等)
  4. 什么软件可以把照片变成漫画?试试这几款图片处理工具
  5. 拍卖网html模板,html5织梦高端复古婚纱/影楼/摄影工作室网站模板
  6. 回溯算法——n皇后问题
  7. LNA(Low Noise Amplifier, 低噪声功率放大器)简介
  8. 教堂环境风琴-Marcos Ciscar Ethereal Keys Kontakt
  9. 磁盘阵列raid LVM创建
  10. 域格模组GPS定位,WiFi定位,基站定位的使用