2016-04-15 3 views
-2

Ich habe alle diesbezüglichen Beiträge gelesen und eine Menge Dokumentation gelesen, weiß aber immer noch nicht, was ich tun soll. Wenn ich die App auf meinem Handy starte, wird die Standort-Schaltfläche hinzugefügt, aber nichts passiert, wenn ich sie drücke, wenn das GPS nicht aktiviert ist. Wenn ich es aktiviere (manuell, nicht gedrängt oder irgendetwas), funktioniert es perfekt.Bitten Sie den Benutzer, sein GPS zu aktivieren, wenn Sie com.google.android.gms.location.LocationListener verwenden.

Was ich tun möchte, ist, dass, wenn der Benutzer die Schaltfläche Standardposition drückt, eine neue benutzerdefinierte Absicht aufgerufen werden sollte. Etwas wie dieses:

if (mLastLocation == null) { 

    LayoutInflater inflater = getLayoutInflater(); 
    @SuppressLint("InflateParams") View layout = inflater.inflate(R.layout.toast_gps_view, null); 

    Toast toast = new Toast(getApplicationContext()); 
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
     toast.setDuration(Toast.LENGTH_LONG); 
     toast.setView(layout); 
     toast.show(); 


     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivity(intent); 

Als ich den android.location.LocationListener importierte; Die Callback-Methode onProviderDisabled wurde aufgerufen, und ich konnte meinen Code dort hinzufügen, aber jetzt wird diese Methode mit dem com.google.android.gms.location.LocationListener nicht mehr überschrieben. Was muss ich also tun, damit der Benutzer zur Aktivierung des GPS aufgefordert wird?

Antwort

0

Endlich herausgefunden, wie es geht. Hier ist, wie ich es gemacht habe:

mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() { 
      @Override 
      public boolean onMyLocationButtonClick() { 

       LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE); 

       boolean enabledGPS = service 
         .isProviderEnabled(LocationManager.GPS_PROVIDER); 
       boolean enabledWiFi = service 
         .isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

       if (!enabledGPS) { 

        LayoutInflater inflater = getLayoutInflater(); 
        @SuppressLint("InflateParams") View layout = inflater.inflate(R.layout.toast_gps_view, null); 

        Toast toast = new Toast(getApplicationContext()); 
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
        toast.setDuration(Toast.LENGTH_LONG); 
        toast.setView(layout); 
        toast.show(); 


        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
        startActivity(intent); 

       } else if (!enabledWiFi) { 

        Toast.makeText(getApplicationContext(), 
          "Network signal or WiFi connections not found", 
          Toast.LENGTH_LONG).show(); 
        Intent intent = new Intent(
          Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
        startActivity(intent); 

       } 

       return false; 
      } 
     }); 
Verwandte Themen