我不能在 android 中使用 locationServices.getLastLocation

Posted

技术标签:

【中文标题】我不能在 android 中使用 locationServices.getLastLocation【英文标题】:I cant use the locationServices.getLastLocation in android 【发布时间】:2017-05-09 11:21:49 【问题描述】:

我正在尝试在我的 android 应用程序中获取最后一个位置。这是通过我的应用程序中的 mapbox 进行的。但我无法导入“import com.mapbox.mapboxsdk.location.LocationServices;”

apply plugin: 'com.android.application'

依赖 编译组:'com.mapbox.mapboxsdk',名称:'mapbox-android-navigation',版本:'0.1.0'

compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
    exclude group: 'com.android.support', module: 'support-annotations'
)
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile('com.mapbox.mapboxsdk:mapbox-android-sdk:3.2.0@aar') 
    transitive = true

compile ('com.mapbox.mapboxsdk:mapbox-android-directions:1.0.0@aar')
    transitive=true

compile 'com.google.android.gms:play-services:10.2.1'
compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:5.0.2@aar')
    transitive=true

compile ('com.mapbox.mapboxsdk:mapbox-android-services:2.1.0@aar')
    transitive=true

compile('com.mapbox.mapboxsdk:mapbox-android-sdk:4.0.0@aar') 
    transitive = true

【问题讨论】:

你能提供你构建的gradle吗? 【参考方案1】:

我正在使用以下代码来获取我的应用程序中的最后一个位置:

public static Location getLastKnownLocation(Context context) 
    try 
        LocationManager mLocationManager = (LocationManager) context.getSystemService(LOCATION_SERVICE);
        List<String> providers = mLocationManager.getProviders(true);
        Location bestLocation = null;
        for (String provider : providers) 
            Location l = mLocationManager.getLastKnownLocation(provider);
            if (l == null) 
                continue;
            
            if (bestLocation == null || l.getAccuracy() < bestLocation.getAccuracy()) 
                // Found best last known location: %s", l);
                bestLocation = l;
            
        
        return bestLocation;
     catch (SecurityException e) 
        e.printStackTrace();
        return null;
    

此代码仍需要改进:最好请求权限而不是捕获安全异常: see this *** thread

不要忘记在清单上添加所需的权限:

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

【讨论】:

以上是关于我不能在 android 中使用 locationServices.getLastLocation的主要内容,如果未能解决你的问题,请参考以下文章

在Android中使用FusedLocationApi时如何获取Location的模式

无法在 android 中强制转换为 android.location.LocationListener

如何从弹出的 Expo 项目中删除“android.hardware.location”权限请求?

调用需要 API 级别 24(当前最低为 8):新的 android.location.GnssStatus.Callback

使用 android fused location api 在 MyLocation 上未显示蓝点

为啥在 android 中使用 NETWORK_PROVIDER 时 location.getSpeed() 总是返回 0?