FusedLocationApi.getLastLocation 总是返回 null(android 6.0,api 23)

Posted

技术标签:

【中文标题】FusedLocationApi.getLastLocation 总是返回 null(android 6.0,api 23)【英文标题】:FusedLocationApi.getLastLocation always returns null(android 6.0,api 23) 【发布时间】:2020-06-24 19:03:15 【问题描述】:

我在手机上试试。它总是返回 null。为什么?(授予所有权限。ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION)

fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED &&
            ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                    != PackageManager.PERMISSION_GRANTED) 
        return;
    
    fusedLocationClient.getLastLocation()
            .addOnSuccessListener(this, new OnSuccessListener<Location>() 
                @Override
                public void onSuccess(Location location) 
                    if (location != null) 
                        Toast.makeText(MainActivity.this, "Location: "+location, Toast.LENGTH_SHORT).show();
                    
                    else
                        Toast.makeText(MainActivity.this, "null", Toast.LENGTH_SHORT).show();
                    

            );

依赖关系:

dependencies 
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.android.gms:play-services-location:16.0.0'

清单:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

【问题讨论】:

这能回答你的问题吗? Current location is not showing in my android app 很遗憾,我的手机仍然无法获取当前位置 【参考方案1】:

永远无法保证您从getLastLocation() 获得位置。通常这意味着没有任何应用程序使用 GPS 来获取您的位置,因此没有任何缓存。

通常你所要做的就是打开谷歌地图或某个位置一旦被锁定就会被缓存的东西

【讨论】:

谢谢,我如何在不使用谷歌地图且没有最后位置的情况下获取当前位置? 你必须开始通过位置客户端监听位置变化

以上是关于FusedLocationApi.getLastLocation 总是返回 null(android 6.0,api 23)的主要内容,如果未能解决你的问题,请参考以下文章