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

本文主要是介绍locationManager.getLastKnownLocation(locationProvider);//地理位置获取为null的解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

方案一:没有加权限

<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的解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000789

相关文章

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>

JS和jQuery获取节点的兄弟,父级,子级元素

原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素。 <div id="test"><div></div><div></div

明明的随机数处理问题分析与解决方案

明明的随机数处理问题分析与解决方案 引言问题描述解决方案数据结构设计具体步骤伪代码C语言实现详细解释读取输入去重操作排序操作输出结果复杂度分析 引言 明明生成了N个1到500之间的随机整数,我们需要对这些整数进行处理,删去重复的数字,然后进行排序并输出结果。本文将详细讲解如何通过算法、数据结构以及C语言来解决这个问题。我们将会使用数组和哈希表来实现去重操作,再利用排序算法对结果

UE5 半透明阴影 快速解决方案

Step 1: 打开该选项 Step 2: 将半透明材质给到模型后,设置光照的Shadow Resolution Scale,越大,阴影的效果越好

vcpkg子包路径批量获取

获取vcpkg 子包的路径,并拼接为set(CMAKE_PREFIX_PATH “拼接路径” ) import osdef find_directories_with_subdirs(root_dir):# 构建根目录下的 "packages" 文件夹路径root_packages_dir = os.path.join(root_dir, "packages")# 如果 "packages"

MySQL主从同步延迟原理及解决方案

概述 MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力; ②在从主服务器进行备份,避免备份期间影响主服务器服务; ③当主服务器出现问题时,可以切换到从服务器。 相信大家对于这些好处已经非常了解了,在项目的部署中也采用这种方案。但是MySQL的主从同步一直有从库延迟的问题,那么为什么会有这种问题。这种问题如何解决呢? MyS

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控