我用简单的*location manager*object来获取设备的lastKnownLocation(),但在return中得到null object,谁能告诉我为什么?
验证码:
public Location getLocation() {
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
if (locationManager != null) {
Location lastKnownLocationGPS = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (lastKnownLocationGPS != null) {
return lastKnownLocationGPS;
} else {
Location loc = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
System.out.println("1::"+loc);----getting null over here
System.out.println("2::"+loc.getLatitude());
return loc;
}
} else {
return null;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.location);
getLocation();-----calling service
}
给予的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
还缺什么东西吗我已经检查了我的位置服务是在设备上,请给予一些工作的例子链接
9条答案
按热度按时间ljsrvy3e1#
在获取最后一个位置之前,也许你想获取当前位置,检查是否为null或have。如果没有设置最后位置,如果你想使用FusedLocationProviderClient,在使用它之前添加以下内容:
实现'com.google.android.gms:play-services-location:16.0.0'
在您的build.gradle(模块:app),并在创建activity时调用方法zoomMyCuurentLocation()。
rslzwgfq2#
愚蠢的事情作为回答这个…我重新启动我的设备…它的工作…请确保您的服务的位置是启用和工作正常
4uqofj5v3#
我用Name of the place来获取Location的方法是
GPSTracker.java
ghg1uchk4#
要获取最后一个位置,您可以参考上面提供的答案,其中您可以使用位置管理器或FusedLocationClient
但是您也可以使用LocationServices,它比其他方法更快。
让我简单介绍一下工作:
1)在gradle应用文件中添加这两个依赖
2)在applicationtag外的manifest文件中添加这些权限
3)在onCreate外部声明变量
4)现在在onCreate里面:
5)没有定义fetchLastLocation方法
6)现在定义另外两种权限请求方式
注意:将context替换为您的类context
您将在Logcat中获得您的位置。
希望这将希望你或其他人
monwx1rj5#
我发现的最好的方法:
可以从系统服务
LOCATION
获取的locationManager
变量。q5lcpyga6#
clj7thdc7#
下面是我试图获得最后位置的方法。
ykejflvf8#
在Kotlin中实现:抱歉我弄了个可怕的压痕
1.在gradle应用文件中添加这两个依赖项
1.在applicationtag外部的清单文件中添加这些权限
1.在onCreate外部声明变量
1.现在在onCreate内部:
1.没有定义fetchLastLocation方法注意:这里getCurrentLocation表示最后一个位置。
}
1.现在为权限请求定义其他方法
ss2ws0br9#
这里有一个更好的解决方案:
下面这行代码:
criteria.setAccuracy(Criteria.ACCURACY_FINE);
。