Ich habe bereits tausend Konfigurationen und Codes versucht, aber meine Kartenaktivität besteht darauf, nicht zu funktionieren. Dinge, die ich habe versucht:Map Fragment funktioniert nicht in Android
AndroidManifest.xml
- aktiviert Zugriffsberechtigungen (INTERNET, ACCESS_FINE_LOCATION, READ_GSERVICES usw.);
- aktiviert OpenGL (android: glEsVersion = "0x00020000" usw.);
- geliefert zwei Schlüssel (com.google.android.geo.API_KEY und com.google.android.maps.v2.API_KEY) mit direkt in AndroidManifest und referenzieren, dass durch XML-Werte in Debug-und Freigabeordner (@ string/map_api);
- versucht, Kartenbibliothek zu verwenden (uses-library android: name = "com.google.android.maps");
- versucht, Berechtigungstag zu verwenden uses-permission (... permission.MAPS_RECEIVE);
- versuchte Service-Version zu informieren (Android: name = "com.google.android.gms.version");
- versucht, Schlüssel für ein eigenes Zertifikat und android.keystore unter .android-Ordner zu generieren;
Datei:
<manifest package="com.myapp" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:anrdroid="http://schemas.android.com/apk/res-auto"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <application android:allowBackup="true" android:icon="@drawable/logo" android:label="@string/name" android:supportsRtl="true" android:name="android.support.multidex.MultiDexApplication" android:theme="@style/Default"> <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_maps_key"/> <activity android:name=".view.MainActivity" android:icon="@drawable/logo" android:label="@string/name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".view.ActivityMap" android:icon="@drawable/logo_row" android:label="@string/name"> </activity> ... </application> </manifest>
build.gradle
- verschiedene Kompilierung versucht und Build-Konfigurationen (23, 22, 19 usw.);
- versuchten verschiedene Bibliotheksversionen (8.4.0, 7.80 usw.);
- ausprobiert verschiedene Bibliotheksversionen für appcompat Bibliothek (23.2.1, 22.2.1 usw.);
- verwendet selektive kompilieren nur für Karten und Abhängigkeiten oder Google Services abgeschlossen;
- versucht, debuggen und release mit gleichen und verschiedenen Schlüsseln zu signieren;
Datei:
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion '23.0.2' defaultConfig { applicationId "com.myapp" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "0.0.1" multiDexEnabled true } signingConfigs { keystore { storeFile file("path_to_keystore") storePassword "my_password" keyAlias "my_key_alias" keyPassword "my_password" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.keystore } } packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/io.netty.versions.properties' exclude 'META-INF/INDEX.LIST' } dexOptions { javaMaxHeapSize "2g" } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.android.support:design:23.2.1' compile 'com.google.android.gms:play-services-maps:8.4.0' compile 'com.datastax.cassandra:cassandra-driver-mapping:3.0.0' compile 'com.fasterxml.jackson.core:jackson-core:2.5.4' compile 'com.fasterxml.jackson.core:jackson-databind:2.5.4' }
-Code
- versuchte sich AppCompat, FragmentActivity;
- versucht, Erlaubnis in API 6 mit ActivityCompat.requestPermissions();
- versucht Aufruf MapsInitializer.initialize() und überprüfen Sie Rückkehr;
- versucht, nur Fragment in Layout-Datei zu verwenden, Kontext usw. zu informieren;
- versucht, Fragment in FragmentLayout zu verwenden;
Dateien:
public class ActivityMap extends FragmentActivity implements OnMapReadyCallback { private GoogleMap map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); SupportMapFragment fragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.activityMapID); fragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap googleMap) { map = googleMap; map.addMarker(new MarkerOptions().position(new LatLng(-34, 151)).title("Marker in Sydney")); } }
activity_map.xml:
<fragment android:id="@+id/activityMapID"
android:name="com.google.android.gms.maps.SupportMapFragment"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Andere
- überprüfte meine Netzwerkverbindungen und Firewalls;
- überprüft, ob die Schlüssel in Google Console verfügbar waren und funktionierten;
- versucht, mehrmals zu säubern, Projekt neu zu erstellen und Caches für Android Studio ungültig zu machen;
- versucht, Daten zu löschen, Gerät neu zu starten und zu reinigen (und in mehr als einem Gerät getestet);
- entfernt die App über adb mit "adb Shell pm clear ...";
- keine nullpointers, onMapReady gibt eine gültige Karte und Debugging-Code, alles funktioniert gut;
- Wenn ich eine neue Karten-App mit Android Studio erstelle, funktioniert alles einwandfrei;
Im ersten Anruf habe ich dieses Protokoll:
03-21 09:34:28.478 25570-26174/com.myapp I/LoadedApk: connected(), package name=com.google.android.gms ,class name=com.google.android.gms.maps.auth.ApiTokenService
03-21 09:34:29.770 25570-25570/com.myapp I/Choreographer: Skipped 127 frames! The application may be doing too much work on its main thread.
03-21 09:34:30.020 25570-27391/com.myapp I/b: Sending API token request.
03-21 09:34:30.090 25570-25633/com.myapp I/LoadedApk: connected(), package name=com.google.android.gms ,class name=com.google.android.location.internal.GoogleLocationManagerService
03-21 09:34:31.231 25570-27391/com.myapp I/b: Received API Token: AH0uPGGIx9Ygap4ZXq8T8vK7qcPxgyDi5NRIaIPyPauG4xWFn1lI7KQF9IuY2yqbpYMhWitKnTUiU-sZD9tFdJvr1naCVhz3c9APmLbueopuhcD6K5LHpZKnkYCQDEefhrTeGPNOR0fdz0QmC4WD8rkgQTbLmfbnOIA7cvZZBOmn7hFmcyavIVRQZlaY9_OLaPMFxIVFVBml/Expires in: 432000000ms
03-21 09:34:31.241 25570-27391/com.myapp I/c: Scheduling next attempt in 431700 seconds.
03-21 09:34:31.251 25570-27391/com.myapp I/d: Saved auth token
03-21 09:34:31.832 25570-25582/com.myapp I/LoadedApk: connected(), package name=com.google.android.gms ,class name=com.google.android.gms.clearcut.service.ClearcutLoggerService
Dann, nach zweitem Anruf habe ich die Meldung, dass mein Schlüssel ungültig ist:
03-21 09:35:22.596 25570-25633/com.myapp I/LoadedApk: connected(), package name=com.google.android.gms ,class name=com.google.android.gms.clearcut.service.ClearcutLoggerService
03-21 09:35:37.762 25570-25570/com.myapp I/Google Maps Android API: Google Play services package version: 8703034
03-21 09:35:37.973 25570-28472/com.myapp E/Google Maps Android API: Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).
03-21 09:35:38.363 25570-25582/com.myapp I/LoadedApk: connected(), package name=com.google.android.gms ,class name=com.google.android.location.internal.GoogleLocationManagerService
Ich weiß nicht wirklich was zu tun ist. Hat jemand eine Idee, was könnte passieren?
Vielen Dank im Voraus.
http://stackoverflow.com/questions/17491400/failed-to-load-map-error-contacting-google-servers-issue-with-android-google-ma Ein weiterer Link: http ://Paketüberfluss.com/questions/17667935/failed-to-load-map-error-kontaktieren-google-servers-dieses-ist-wahrscheinlich-ein-authentisch –
Ich nehme an, Sie sind ziemlich verwirrt. Wie Ihre andere Karten-App funktioniert. Sie haben sicherlich etwas Konfiguration verpasst, während Sie den Prozess in der aktuellen App verfolgen. –
Die seltsame Sache ist, wenn ich direkt meine Kartenaktivität von Manifest als Launcher aufrufen, funktioniert es gut. Wenn ich es von einer anderen Aktivität aus anrufe, funktioniert das nicht. Ich versuche immer noch, ein Berechtigungsproblem herauszufinden ... – user2387273