Gps-status aktiviert/deaktiviert broadcast receiver
Ich m versuchen zu registrieren, ein broadcast receiver, um updates zu erhalten, wenn der gps-status ist geändert.
Aber, meine GpsChangeReceiver onReceive-Methode scheint nicht aufgerufen zu werden, wenn der gps-status ist geändert von aktiviert zu deaktiviert oder Umgekehrt.
Zunächst, ich bin die Registrierung der Empfänger:
GpsChangeReceiver m_gpsChangeReceiver = new GpsChangeReceiver();
this.registerReceiver(m_gpsChangeReceiver, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));
Dann habe ich meinen gps-Empfänger
public class GpsChangeReceiver extends BroadcastReceiver
{
@Override
public void onReceive( Context context, Intent intent )
{
final LocationManager manager = (LocationManager) context.getSystemService( Context.LOCATION_SERVICE );
if (manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
//do something
}
else
{
//do something else
}
}
}
Endlich, mein manifest enthält:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Kann jemand sehen, warum der gps-Empfänger wird nie aufgerufen, wenn ich ändern Sie seinen status vom Telefon s Einstellungen??
InformationsquelleAutor der Frage Dan Dinu | 2012-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Möglichkeiten der Registrierung broadcast-Receiver in Android:
Lassen Sie mich erklären die Unterschiede.
Fall 1 (Broadcast Receiver registriert im code)
Empfangen Sie nur noch Sendungen, solange Kontextwo Sie registriert der Empfänger lebendig.
Also, wenn Aktivität oder Anwendung ist getötet (je nachdem, wo du dich registriert hast-Empfänger) Sie nicht erhalten Sendungen mehr.
Ich denke, Sie registrierten broadcast receiver in der Aktivität Kontext die nicht sehr guter Ansatz.
Wenn Sie sich registrieren wollen-broadcast-Empfänger für Ihre Anwendungskontext können Sie etwas wie das hier tun:
Fall 2 (Broadcast Receiver registriert AndroidManifest.xml)
Du erhalten Sendungenauch wenn Ihre Anwendung ist getötet (system wake-Ihre Anwendung). Dies ist die richtige Vorgehensweise ist, wenn Sie erhalten möchten Sendungen egalwenn Ihre app läuft.
Fügen Sie diese zu Ihrem Empfänger AndroidManifest.xml:
EDIT:
Einige spezielle Sendungen (d.h. SCREEN_ON oder SCREEN_OFF) registriert werden, müssen im code (Fall 1) da Sie sonst nicht zugestellt werden zu Ihrer Anwendung.
InformationsquelleAutor der Antwort stevo.mit