मेरे पास कुछ साझा वरीयताएं (अक्षांश, देशांतर) है जो मैं किसी सेवा से एक्सेस करना चाहता हूं, जो गतिविधि से उप-वर्गीकृत नहीं है।किसी सेवा पर साझा किए गए संदर्भों का उपयोग करने में समस्याएं (GetPreferences किसी सेवा पर मौजूद नहीं है)
विशेष रूप से, जब मैं getPreferences तक पहुंचने का प्रयास करता हूं, तो यह फ़ंक्शन किसी सेवा पर मौजूद नहीं होता है। मेरा कोड नीचे पोस्ट किया गया है
मेरा लक्ष्य यहां मेरी साझा प्राथमिकताओं को मेरी सेवा के साथ लिखने की अनुमति देना है। कोई सुझाव/उदाहरण जो मुझे मदद कर सकता है?
public class MyService extends Service implements Runnable {
LocationManager mLocationManager;
Location mLocation;
MyLocationListener mLocationListener;
Location currentLocation = null;
static SharedPreferences settings;
static SharedPreferences.Editor configEditor;
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate() {
settings = this.getPreferences(MODE_WORLD_WRITEABLE);
configEditor = settings.edit();
writeSignalGPS();
}
private void setCurrentLocation(Location loc) {
currentLocation = loc;
}
private void writeSignalGPS() {
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if (mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
Looper.prepare();
mLocationListener = new MyLocationListener();
mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 1000, 0, mLocationListener);
Looper.loop();
//Looper.myLooper().quit();
} else {
Toast.makeText(getBaseContext(),
getResources().getString(R.string.gps_signal_not_found),
Toast.LENGTH_LONG).show();
}
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (currentLocation!=null) {
configEditor.putString("mylatitude", ""+currentLocation.getLatitude());
configEditor.putString("mylongitude", ""+currentLocation.getLongitude());
configEditor.commit();
}
}
};
private class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
Toast.makeText(getBaseContext(),
getResources().getString(R.string.gps_signal_found),
Toast.LENGTH_LONG).show();
setCurrentLocation(loc);
handler.sendEmptyMessage(0);
}
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
मैं आप केवल अपने आवेदन के लिए एक SharedPreferences
उपयोग कर रहे हैं पंक्ति settings = this.getPreferences(MODE_WORLD_WRITEABLE);
क्या आप मुझे थोड़ा और बता सकते हैं कि मुझे वरीयता प्रबंधक का उपयोग करने के लिए मेरे कोडोड पर क्या बदलना है? मैं google पर खोज रहा हूं लेकिन मुझे – NullPointerException
@ AndroidUser99 के लिए मान्य जानकारी नहीं मिल रही है: आप 'PrepectManager.getDefaultSharedPreferences()' पर कॉल के साथ 'getPreferences()' पर कॉल को प्रतिस्थापित करते हैं। – CommonsWare
मैंने इसके साथ प्रयास किया: सेटिंग्स = प्राथमिकता प्रबंधक .getDefaultSharedPreferences (MODE_WORLD_WRITEABLE); लेकिन मुझे एक त्रुटि देता है, मैं क्या गलत कर रहा हूं? – NullPointerException