Немного поздно, чтобы помочь вам в этом, но я надеюсь, что это поможет кому-то в будущем.Вот ваша проблема:
public void onCreate() {
settings = this.getPreferences(MODE_WORLD_WRITEABLE);
configEditor = settings.edit();
writeSignalGPS();
}
Поскольку вы извлекаете файл Shared Preference только при создании службы, файл никогда не обновляется должным образом службой, и поэтому данные никогда не передаются приложению.Перед записью в Shared Preferences или извлечением любых данных, которые могли измениться, убедитесь, что снова получили файл Shared Preferences (перезагрузите), например:
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (currentLocation!=null) {
settings = this.getPreferences(MODE_WORLD_WRITEABLE);
configEditor = settings.edit();
configEditor.putString("mylatitude", ""+currentLocation.getLatitude());
configEditor.putString("mylongitude", ""+currentLocation.getLongitude());
configEditor.commit();
}
}
, затем в вашем приложении:
settings = this.getPreferences(MODE_WORLD_WRITEABLE);
String myLat = setttings.getString("mylatitude","");
Кроме того, все, что в Android 3.0 имеет сценарий, в котором служба и действие совместно используют общие привилегии, следует использовать:
settings = this.getPreferences(MODE_MULTI_PROCESS);