Android googleMap Map zeigt nicht, nur Raster, manchmal

Also, ich habe daran gearbeitet, dies zu bekommen und läuft für einige Zeit jetzt. Problem ist, ich habe meine Karte Schlüssel von Google ordnungsgemäß in main.xml platziert, aber ich kann nicht scheinen, um eine Anbieter-Informationen zu bekommen, wie die Karte überhaupt nicht angezeigt wird. Ich habe es ein paar Mal laufen und das scheitert an der gleichen Stelle. Ich habe versucht zu debuggen und bemerkt, dass es einen Provider String zurückgegeben, aber nach, dass eine Null.

Der Code scheitert an

  • Force HttpURLConnection zur Nutzung von Mobilfunk und Fallback zu WiFi
  • CLOSED_LOGIN_FAILED und FacebookOperationCanceledException
  • Rest Server oder API, um meinen Restful Client zu testen?
  • Hinzufügen von Elementen zu Endless Scroll RecyclerView mit ProgressBar unten
  • Ist google gson auf Android laufen?
  • Fehler beim Ausführen von reaktionsfähigem Run-android --variant = release (Task 'installReleaseDebug' nicht im Root-Projekt 'gnosisapp' gefunden).
  • @Override protected void onResume() { super.onResume(); locationManager .requestLocationUpdates(getBestProvider(), 1000, 1, this); } 

    Mit der folgenden Fehlermeldung.

     08-20 05:14:43.573: E/AndroidRuntime(239): Uncaught handler: thread main exiting due to uncaught exception 08-20 05:14:43.583: E/AndroidRuntime(239): java.lang.RuntimeException: Unable to resume activity {com.shawnbe.mallfinder/com.shawnbe.mallfinder.MallFinderActivity}: java.lang.NullPointerException 08-20 05:14:43.583: E/AndroidRuntime(239): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2950) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2965) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2516) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.os.Handler.dispatchMessage(Handler.java:99) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.os.Looper.loop(Looper.java:123) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.app.ActivityThread.main(ActivityThread.java:4363) 08-20 05:14:43.583: E/AndroidRuntime(239): at java.lang.reflect.Method.invokeNative(Native Method) 08-20 05:14:43.583: E/AndroidRuntime(239): at java.lang.reflect.Method.invoke(Method.java:521) 08-20 05:14:43.583: E/AndroidRuntime(239): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 08-20 05:14:43.583: E/AndroidRuntime(239): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 08-20 05:14:43.583: E/AndroidRuntime(239): at dalvik.system.NativeStart.main(Native Method) 08-20 05:14:43.583: E/AndroidRuntime(239): Caused by: java.lang.NullPointerException 08-20 05:14:43.583: E/AndroidRuntime(239): at com.shawnbe.mallfinder.MallFinderActivity.onResume(MallFinderActivity.java:61) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.app.Activity.performResume(Activity.java:3763) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2937) 08-20 05:14:43.583: E/AndroidRuntime(239): ... 12 more 

    Gelegentlich startet der Code das Raster, aber keine Karte. Während auf anderen Läufen, es einfach ausfällt.

    Unten ist mein Aktivitätscode.

     package com.shawnbe.mallfinder; import java.util.List; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.OverlayItem; import android.content.Context; import android.graphics.drawable.Drawable; import android.location.Criteria; import android.location.Location; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; public class MallFinderActivity extends MapActivity implements android.location.LocationListener { /** Called when the activity is first created. */ private MapController mapController; private MapView mapView; private android.location.LocationManager locationManager; private GeoPoint currentPoint; private Location currentLocation = null; private TextView latituteField; private TextView longitudeField; private String bestProvider; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MapView mapView = (MapView) findViewById(R.id.mapView); mapView.setBuiltInZoomControls(true); Location location; //getBestProvider(); if(bestProvider !=null) location = locationManager.getLastKnownLocation(bestProvider); List<Overlay> mapOverlays = mapView.getOverlays(); Drawable drawable = this.getResources().getDrawable( R.drawable.androidmarker); MapItemizedOverlay itemizedoverlay = new MapItemizedOverlay(drawable, this); LocalGeoPoints loc = new LocalGeoPoints(); for (OverlayItem a : loc.overlayitems) { itemizedoverlay.addOverlay(a); } mapOverlays.add(itemizedoverlay); } @Override protected void onResume() { super.onResume(); locationManager .requestLocationUpdates(getBestProvider(), 1000, 1, this); } public void getLastLocation() { String provider = getBestProvider(); currentLocation = locationManager.getLastKnownLocation(provider); if (currentLocation != null) { setCurrentLocation(currentLocation); } else { Toast.makeText(this, "Location not yet acquired", Toast.LENGTH_LONG) .show(); } } public void animateToCurrentLocation() { if (currentPoint != null) { mapController.animateTo(currentPoint); } } public String getBestProvider() { locationManager = (android.location.LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setPowerRequirement(Criteria.NO_REQUIREMENT); criteria.setAccuracy(Criteria.NO_REQUIREMENT); bestProvider = locationManager.getBestProvider(criteria, false); return bestProvider; } public void setCurrentLocation(Location location) { int currLatitude = (int) (location.getLatitude() * 1E6); int currLongitude = (int) (location.getLongitude() * 1E6); currentPoint = new GeoPoint(currLatitude, currLongitude); currentLocation = new Location(""); currentLocation.setLatitude(currentPoint.getLatitudeE6() / 1e6); currentLocation.setLongitude(currentPoint.getLongitudeE6() / 1e6); } @Override protected boolean isRouteDisplayed() { return false; } /* Remove the locationlistener updates when Activity is paused */ @Override protected void onPause() { super.onPause(); locationManager.removeUpdates(this); } @Override public void onLocationChanged(Location location) { int lat = (int) (location.getLatitude()); int lng = (int) (location.getLongitude()); latituteField.setText(String.valueOf(lat)); longitudeField.setText(String.valueOf(lng)); } @Override public void onProviderEnabled(String provider) { Toast.makeText(this, "Enabled new provider " + provider, Toast.LENGTH_SHORT).show(); } @Override public void onProviderDisabled(String provider) { Toast.makeText(this, "Disabled provider " + provider, Toast.LENGTH_SHORT).show(); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } } 

    Und unten ist meine main.xml ccomplete mit dem Schlüssel, den ich von der Google Map Registration Site erhalten habe.

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.google.android.maps.MapView android:id="@+id/mapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:apiKey="0steid872FeGgae0eO2Dhdyei37sFPHG65t7N6XA"/> </FrameLayout> </LinearLayout> 

    Das Bild unten ist alles was ich bekomme

  • So behandeln Sie die Bildschirmorientierungsänderungen, wenn eine asyntask mit android 4.x läuft
  • Wie kann man einen mobilen Gerätehersteller und Modell programmgesteuert in Android erkennen?
  • Aapt.exe hat aufgehört zu arbeiten
  • Zurücksetzen von TextView nach oben
  • Android-Portrait-Kamera Zuverlässigkeit
  • Pause und Wiederaufnahme der Kinderaktivitäten in ActivityGroup
  • 12 Solutions collect form web for “Android googleMap Map zeigt nicht, nur Raster, manchmal”

    https://developers.google.com/maps/documentation/android/mapkey – offizielle Informationen, was zu tun ist.

    Schritt für Schritt.

    1) Keystore erstellen

    2) Erzeugen von Hash MD5 aus Ihrem Keystore

    3) Melden Sie sich hier an: https://developers.google.com/android/maps-api-signup

    4) Füge den Schlüssel zu deiner Anwendung hinzu

    Viel Glück!

    In onCreate sollten Sie init locationManager Feld. Bewegung

     locationManager = (android.location.LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    String von getBestProvider() -Methode zu deinem onCreate ()

    Schau dir deine Stacktrace an. Sie haben nur einen Ort, an dem NPE potenziell auftreten kann

     . . . 08-20 05:14:43.583: E/AndroidRuntime(239): Caused by: java.lang.NullPointerException 08-20 05:14:43.583: E/AndroidRuntime(239): at com.shawnbe.mallfinder.MallFinderActivity.onResume(MallFinderActivity.java:61) 08-20 05:14:43.583: E/AndroidRuntime(239): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149) 

    Der Grund, warum du einen NullPointer bekommst, ist, dass du locationManager niemals einsetztest, bevor du ihn in onResume() .

    onCreate() wird angerufen, wo du getBestProvider() kommentiert hast. Dann wird onResume() aufgerufen und das benutzt locationManager. Obwohl du noch eine noch kompliziertere Situation hier hast. Ich werde sehen, ob ich durchgehen kann, was Code in onResume () ausführen wird …

    1. Super.onResume ()
    2. LocationManager.requestLocationUpdates () <- es wird wahrscheinlich nachschlagen diese Methode und erhalten Sie einen Nullzeiger … wir werden fortfahren, wenn locationManager nicht null war
    3. LocationManager = (android.location.LocationManager) getSystemService (Context.LOCATION_SERVICE); <- jetzt wechsst du das von Schritt 2 verwendete Objekt …

    Wenn ich Sie wäre, würde ich die Dinge vereinfachen, nur den locationManager in onCreate() als allgemeine Programmierpraxis willst du die Anzahl der Nebenwirkungen in Methoden einschränken, was ich meine, ist in getBestProvider() , du solltest einfach zurückkehren Besten Anbieter, und versuchen Sie nicht, etwas anderes zu Ihrem Staat zu tun, oder Sie erhalten verrückte unerwartete Dinge außerhalb dieser Methode). Wenn du immer noch etwas Wahnsinn hast, würde ich einfach diese erste Zeile von getBestProvider() in onResume()

     protected void onResume() { super.onResume(); locationManager = (android.location.LocationManager) getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(getBestProvider(), 1000, 1, this); } 

    Sie wollen wahrscheinlich nicht, dass es so, aber es wird sicherstellen, dass Ihr Problem ist, dass locationManager ist null in onResume()

    Viel Glück.

    Wenn du einen gültigen Kartenschlüssel hast, dann kontrollierst du, ob du eine Instanz von locationManager in onResume bekommst. Ich denke, du musst den Standortmanager in onResume () instanziieren.

      locationManager = (android.location.LocationManager)getSystemService(Context.LOCATION_SERVICE); 

    Sie müssen die Kartenansicht zentrieren und eine angemessene Zoomstufe einstellen. Andernfalls kann die Kartenansicht einige zufällige Bereiche anzeigen.

     mapView.setCenter( new GeoPoint((int)(25.76032 * 1E6), (int)(-80.213928 * 1E6))); //Set a reasonable zoom level mapView.setZoom(12); 

    NullPointerException ist wegen der Zugriff auf Nullobjekt von locationmanager.

    Erstellen Sie apk im Freigabemodus und führen Sie diese Apk-Datei aus, da die Google Map-Karte beim Release-Modus angezeigt wird.

    Bitte aktualisieren Sie Ihren Google Map-API-Schlüssel, der vorherige API-Schlüssel wurde abgelaufen, so dass Sie in diesem Fall nicht in der Lage sind, Google Map zu sehen. https://developers.google.com/android/maps-api-signup

    Stellen Sie sicher, dass Sie es initialisieren, bevor Sie es verwenden.

     locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 

    Probabilly gibt es auch ein mapkey problem:

    Wenn du deine Anwendung im Debug-Modus zum Testen ausführt, musst du einen Mapkey mit dem Standard-Keystore für Debug erstellen (zB bei Linux kannst du ihn bei ~ / .android / debug.keystore finden) und diesen Mapkey in Code einfügen und verwenden Es bis zum Debug dein App.

    Wenn du einen apk erstellen und ausführen willst (zB um deinen apk auf dem markt zu veröffentlichen) musst du einen neuen mapkey mit deinem persönlichen keystore erstellen und ihn aus deinem code ändern, bevor du den apk generierst

    Die MAP-API benötigt einen gültigen Schlüssel, um ordnungsgemäß zu funktionieren.

    Um den AIP-Schlüssel für Ihre Anwendung zu erhalten, müssen Sie die unten aufgeführten Schritte befolgen.

    1. Erstellen Sie den Zertifizierungs-Fingerabdruck Ihrer Anwendung mit dem Befehl keytool.

      Keytool -list -keystore ~ ​​/ .android / debug.keystore Beispiel: 94: 1E: 43: 49: 87: 73: BB: E6: A6: 88: D7: 20: F1: 8E: B5: 98

    2. Mit dem Fingerabdruck-Wert kannst du den Karten-AIP-Schlüssel aus dem unten stehenden Link erzeugen

      https://developers.google.com/android/maps-api-signup

    Hinweis:

    1. Wenn du die Anwendung freigeben willst, kann die gleiche Karten-Api-Taste nicht verwendet werden. Sie müssen den Release-Keystore anstelle des Debug-Keystores (.android / debug.keystore) verwenden. Erzeugen Sie den Fingerabdruck mit dem oben angegebenen Befehl und verwenden Sie ihn, um den Karten-AIP-Schlüssel für die Produktion zu generieren.
    2. Die Keytool-Binärdatei befindet sich in Ihrem System jre bin Ordner.

    C: \ Programme \ Java \ jdk1.7.0_06 \ jre \ bin

    LocationManager ist null, es gibt keine Diskussion darüber, hast du es in manifest.xml angegeben?

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.