错误 locationManager.getLastKnownLocation
Error locationManager.getLastKnownLocation
我遵循有关半正弦公式的教程
这是我在 MainAcitvity 中的函数 lokasi()
private void lokasi(){
location = locationManager.getLastKnownLocation(provider);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
// permintaan update lokasi device dalam waktu 10 detik
locationManager.requestLocationUpdates(provider, 10000, 1, this);
if(location!=null){
onLocationChanged(location);
callListVolley(latitude, longitude);
}else{
Toast.makeText(getBaseContext(), "Lokasi device pengguna tidak ditemukan.\nMohon hidupkan GPS.",
Toast.LENGTH_LONG).show();
callListVolley(-6.894796, 110.638413);
}
}
所以当我运行然后出现这个错误
FATAL EXCEPTION: main
Process: com.example.invader.haversine, PID: 5913
java.lang.IllegalArgumentException: invalid provider: null
at android.location.LocationManager.checkProvider(LocationManager.java:1704)
at android.location.LocationManager.getLastKnownLocation(LocationManager.java:1194)
**at com.example.invader.haversine.MainActivity.lokasi(MainActivity.java:84)
at com.example.invader.haversine.MainActivity.access[=12=]0(MainActivity.java:36)
at com.example.invader.haversine.MainActivity.run(MainActivity.java:73)**
所以当我签入时 logcat 错误出现在功能开始时,但我不知道我应该怎么做
首先,您应该在请求位置之前检查权限。
其次,您应该检查提供程序是否存在以及是否已启用。
if(locationManager.getAllProviders().contains(LocationManager.GPS_PROVIDER) && locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
provider = LocationManager.GPS_PROVIDER;
}
例如,如果您想使用 GPS_PROVIDER
我遵循有关半正弦公式的教程
这是我在 MainAcitvity 中的函数 lokasi()
private void lokasi(){
location = locationManager.getLastKnownLocation(provider);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
// permintaan update lokasi device dalam waktu 10 detik
locationManager.requestLocationUpdates(provider, 10000, 1, this);
if(location!=null){
onLocationChanged(location);
callListVolley(latitude, longitude);
}else{
Toast.makeText(getBaseContext(), "Lokasi device pengguna tidak ditemukan.\nMohon hidupkan GPS.",
Toast.LENGTH_LONG).show();
callListVolley(-6.894796, 110.638413);
}
}
所以当我运行然后出现这个错误
FATAL EXCEPTION: main
Process: com.example.invader.haversine, PID: 5913
java.lang.IllegalArgumentException: invalid provider: null
at android.location.LocationManager.checkProvider(LocationManager.java:1704)
at android.location.LocationManager.getLastKnownLocation(LocationManager.java:1194)
**at com.example.invader.haversine.MainActivity.lokasi(MainActivity.java:84)
at com.example.invader.haversine.MainActivity.access[=12=]0(MainActivity.java:36)
at com.example.invader.haversine.MainActivity.run(MainActivity.java:73)**
所以当我签入时 logcat 错误出现在功能开始时,但我不知道我应该怎么做
首先,您应该在请求位置之前检查权限。 其次,您应该检查提供程序是否存在以及是否已启用。
if(locationManager.getAllProviders().contains(LocationManager.GPS_PROVIDER) && locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
provider = LocationManager.GPS_PROVIDER;
}
例如,如果您想使用 GPS_PROVIDER