im довольно новый для разработки в android и им не shure, как решить эту проблему. Я выпустил приложение и начал получать сообщения от некоторых ppl с Android 2.1, которые он сбой. Работал хорошо в моем HTC Desire 2.2 и, кажется, работает в симуляторе, и он сработает в симуляторе 2.1, если я не быстро отправлю некоторые GPS с eclipse DDMS.getLastKnownLocation crashes android 2.1
И это не крах, если я изменить код, чтобы не попросить позиции GPS ...
Я ищу Google ALOT на него и, кажется, ошибка в том, что «getLastKnownLocatio» иногда retrns утратившим что делает его аварии, но я не могу найти обходной путь для этого, чтобы поместиться в моем коде .... им не лучший программист в мире :)
Пожалуйста, помогите мне ...
Вот мой Java:
public class WebPageLoader extends Activity implements LocationListener{
public static String Android_ID = null;
final Activity activity = this;
private Location mostRecentLocation;
private void getLocation() {
LocationManager locationManager =
(LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String provider = locationManager.getBestProvider(criteria,true);
//In order to make sure the device is getting the location, request updates.
//locationManager.requestLocationUpdates(provider, 10, 1, this);
//mostRecentLocation = locationManager.getLastKnownLocation(provider);
locationManager.requestLocationUpdates(provider, 1000, 500, this);
mostRecentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
//getLocation();
Android_ID = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
WebView webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
/** Allows JavaScript calls to access application resources **/
webView.addJavascriptInterface(new JavaScriptInterface(), "android16");
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress)
{
activity.setTitle("Letar poliskontroller");
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle(R.string.app_name);
}
});
getLocation();
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
{
// Handle the error
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
});
webView.loadUrl("http://m.domain.se/android/file.php");
}
/** Sets up the interface for getting access to Latitude and Longitude data from device
**/
private class JavaScriptInterface {
public double getLatitude(){
return mostRecentLocation.getLatitude();
}
public double getLongitude(){
return mostRecentLocation.getLongitude();
}
public String getAndroid_ID(){
return Android_ID;
}
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
getLocation();
//android16();
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuItem item = menu.add("Meny");
item = menu.add("Stäng app");
item.setIcon(R.drawable.exit);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getTitle() == "Stäng app") {
finish();
}
return true;
}
}
UPDATE
С вашим предложением приемлема для javacall Wich предотвращает сбои, я также добавил это в Java карты reciving Google
latitude = window.android16.getLatitude();
longitude = window.android16.getLongitude();
if (isNaN(latitude)) {
latitude = 61.72680992165949;
} else {
latitude = latitude;
}
if (isNaN(longitude)) {
longitude = 17.10124969482422;
} else {
longitude = longitude;
}
Теперь, кажется, работает. .. Приветствия и благодарности, много, попробуй это, и возвращайся, чтобы сообщить, когда я его немного исправлю.
Спасибо за реплику, althou im not shure, как я должен это делать. не могли бы вы дать мне небольшой пример? – Jerry 2010-11-28 23:16:46
@Jerry - см. Раздел ОБНОВЛЕНИЕ. – 2010-11-28 23:40:00