gpt4 book ai didi

ANDROID:帮助 LocationProvider

转载 作者:行者123 更新时间:2023-11-29 16:23:52 26 4
gpt4 key购买 nike

我正在尝试获取我正在处理的应用程序的位置。但是,当它尝试选择最佳提供商时,我收到一个错误然后强制关闭。对此问题的任何帮助将不胜感激……我是否需要在 onCreate 中声明一些内容才能使其正常工作?这是一段代码,后跟错误:

public void onStart(){
super.onStart();
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
best = locationManager.getBestProvider(criteria, true);//Selects best location provider given options between GPS and poor man's
locationProvider = locationManager.getProvider(best);

if (locationProvider != null) {
locationManager.requestLocationUpdates(locationProvider.getName(), 60000, 1,
this.locationListenerRecenterMap);
} else {
Log.e(TAG, "NO LOCATION PROVIDER AVAILABLE");
Toast.makeText(this, "The GPS location provider is not available at this time.", Toast.LENGTH_SHORT).show();
finish();
}

GeoPoint location = this.getLastKnownPoint();
this.mapController.animateTo(location);
}
public void onResume(){
super.onResume();
locationManager.requestLocationUpdates(best, 15000, 1, (LocationListener) this);
}
public void onPause(){
locationManager.removeUpdates((LocationListener) this);
}
private GeoPoint getLastKnownPoint(){
GeoPoint lastKnownPoint = GeoUpdateHelper.SCRANTON;
Location lastKnownLocation = this.locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(lastKnownLocation != null){
lastKnownPoint = GeoUpdateHelper.getGeoPoint(lastKnownLocation);
}else{
lastKnownPoint = GeoUpdateHelper.SCRANTON;
}
return lastKnownPoint;
}

这里是错误:

04-16 19:07:25.077: ERROR/AndroidRuntime(4998): Caused by: java.lang.IllegalArgumentException: name==null
04-16 19:07:25.077: ERROR/AndroidRuntime(4998): at android.location.LocationManager.getProvider(LocationManager.java:324)
04-16 19:07:25.077: ERROR/AndroidRuntime(4998): at com.example.mapMain.onStart(mapMain.java:76)

编辑:这是在我的 OG Droid 上运行。当我单击打开获取位置的应用程序的 map 部分时,它会强制关闭。

最佳答案

该错误表示未找到最佳提供者,调用 getBestProvider() 返回 null。

虽然您没有真正指定任何标准,但人们会期望此调用至少返回“某物”。 javadocs 有点模糊,没有提到这个方法可以返回 null。 (查看 source code ,它实际上可以返回 null)

但是,您的应用/设备可能没有任何可用的提供程序。您能否执行以下调用以检查它是否返回任何提供程序(它将返回所有已启用的提供程序,而不考虑任何条件)?

locationManager.getProviders(true) 

假设这是应用程序的限制,请仔细检查您是否定义了以下权限,因为它们需要返回某种提供程序。

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

关于ANDROID:帮助 LocationProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5690314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com