2016-11-07 2 views
0

Ich habe die Google doc und diese post vor allem die interessante @ Bendaf Antwort gelesen, über die Verwaltung von Standorteinstellungen, und alles funktioniert gut.Wie wird informiert, dass sich die Standorteinstellung geändert hat?

Trotzdem bleibt ein Problem bestehen, wenn der Benutzer zuerst entscheidet, seine Position nicht zu verwenden und dann später entscheidet, sie zu aktivieren, die Anwendung wird durch diese Aktion nicht ausgelöst, sodass ich nicht weiß, dass ich regelmäßige Updates anfordern kann.

Was habe ich hier vermisst?

Antwort

0

Sie können einen AlertDialog jedes Mal bereitstellen, wenn der Benutzer eine App startet, damit der Benutzer den Standort aktivieren kann. Aber das wird ein bisschen nervig sein, denn jedes Mal, wenn Sie die gleiche Sache leugnen müssen.

Alternativ können Sie Einstellungen verwenden, so dass Benutzer kann den Standort

+0

Vielleicht habe ich das Problem nicht klar erklärt. Stellen Sie sich vor, dass der Benutzer die Anwendung startet. Ich bat ihn, das GPS zu aktivieren, und er antwortet nein. Später, während er noch die App benutzt, merkt er, dass er seinen Standort benutzen will, dann gehe zu den Einstellungen und aktiviere das GPS. Meine Anwendung ist nicht über diese neue Einstellung informiert. Außer wenn ich einen Thread für 'isGPSEnabled()' erstellen möchte. – 2ndGAB

+0

Ja, das kannst du tun. oder Sie können auch eine Schleife erstellen als: while (isRunning) {boolean b = isGPSEnabled(); if (b) {// Dein Code}} im selben Thread. – hittsss

+0

Klingt seltsam, einen ziehenden Thread in einem ereignisgesteuerten System zu verwenden .... – 2ndGAB

0

Es gibt einen anderen besseren Weg, es zu tun, aktivieren/deaktivieren. Verwenden Sie LocationListener. Es ist für den einzigen Zweck, den Sie erreichen möchten.

public class XYZ Activity implements LocationListener{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,10,this); 
} 


@Override 
public void onLocationChanged(Location location) { 
} 

@Override 
public void onStatusChanged(String s, int i, Bundle bundle) { 
} 

@Override 
public void onProviderEnabled(String s) { 

} 

@Override 
public void onProviderDisabled(String s) { 

} 
} 

Ich denke, das ist das Richtige, was Sie suchen. Es ist der Event-Weg. Happy Coding :)

+0

Ich habe das alles implementiert und ich hoffte, dass 'onStatusChanged()' in einer solchen Situation aufgerufen wird, aber nein. – 2ndGAB

+0

versuchen Sie lm.requestLocationUpdates (LocationManager.GPS_PROVIDER, 1000,0, this); – hittsss

+0

Nein, ich vermute, es verursacht nichts, wenn 'isProviderEnabled()' false zurückgibt. – 2ndGAB

Verwandte Themen