Domanda

Google maps è stato pubblicato l'app e ora, per qualche motivo, non ha smesso di visualizzare la mappa.Ecco il manifesto:

<manifest 

.....

<permission
    android:name="com.x.x.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.x.x.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />


<!-- Maps API needs OpenGL ES 2.0. -->
<uses-feature android:glEsVersion="0x00020000" android:required="true" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name">

    .....

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/map_key" />

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="4030500" />

</application>

Ho il debug e release SHA-1 chiavi di debug e release store e metterli su Google Maps Android API V2 e hanno messo la chiave API per il manifesto (hardcoded e in strings.xml).

Ecco il layout:

<fragment 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment"/>

Qui è il modo in cui cerco di accedere al SupportMapFragment dal frammento essere visualizzato:

    private void setUpMapIfNeeded() 
{
        SupportMapFragment fragment = (SupportMapFragment)fManager.findFragmentById(R.id.map);
        if (fragment != null) 
        {
            mMap = fragment.getMap();
        }

        // Check if we were successful in obtaining the map.
        if (mMap != null)
            setUpMap();
}

Tuttavia frammento restituisce sempre null.A un certo punto mi è stato sempre l'impossibile Autorizzare il messaggio, ma attualmente non vedo che.Solo una mappa vuota.

Aggiornamento: Non sembra essere un problema con le chiavi, ha a che fare con

  android:name="com.google.android.gms.maps.SupportMapFragment"

nel file di layout.Quando cerco di ottenere il frammento da id restituisce null.La cosa frustrante è che ho creato un progetto di test in cui il set up è praticamente identico e funziona.Eppure, quando cerco il codice stesso in questo progetto non funziona.Entrambi i progetti puntano alla stessa Google Play Services library progetto e che sia punto per la Libreria di Supporto v4.Anche il manifesto ha le stesse voci.Inoltre, se posso sostituire SupportMapFragment con MapFragment funziona ok.

È stato utile?

Soluzione 2

Io non sono sicuro perché ha smesso di lavorare quando aveva lavorato in precedenza, ma questa era la soluzione:

SupportMapFragment - Binary file xml linea #2:Errore di gonfiaggio classe frammento

Altri suggerimenti

se tutto è lo stesso (non cambiare il nome del pacchetto, o la chiave, e si utilizza il debug sha1 per il debug api chiave ),ed è interrotto il lavoro, io direi che hai un conflitto con la versione di play services.provare a rimuovere la versione hardcoded qui

 <meta-data
            android:name="com.google.android.gms.version"
            android:value="4030500" />

probabilmente quella versione non funziona con google play services versione (è possibile verificarne l'effettiva versione in google-play-services_lib>res>valori>version.xml).verificare che il file jar che si sta utilizzando è esattamente quella versione, e cambiare, se non il suo.Inoltre, se si controllare il registro di gatto, si può vedere qualcosa di simile

Causato da:java.lang.IllegalStateException:Il meta-tag nel vostro app AndroidManifest.xml non hanno il giusto valore.

vorrei modificare i meta-dati per

<meta-data android:name="com.google.android.gms.version"
           android:value="@integer/google_play_services_version" />

che è quello che google consiglia di e anche seguire gli altri consigli int pagina

comunque, se si da un'occhiata al logcat (o post qui), probabilmente si può ottenere un indizio su tronchi intorno setUpMapIfNeeded()

Beh, secondo il GoogleMap API di Android installazione, si dice

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/map"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:name="com.google.android.gms.maps.MapFragment"/>

che è quello che ho fatto e funziona.Io non l'ho usata suppotMapFragment me, ma da questo link qui, l'elemento sembra essere

<fragment
      class="com.google.android.gms.maps.SupportMapFragment"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>

Probabilmente hai controllato la maggior parte delle cose sono già (come ho fatto io).La mia mappa ha funzionato perfettamente con il debug keystore, ma andò a vuoto, quando ho acceso la chiave firmata.Il mio problema si è risolto quando ho creato una Chiave Api (con chiave di debug+progetto nome del pacchetto) in un unico account google per utilizzare in fase di sviluppo....e ho creato un altro Firmato Api Key (firmato keystore+progetto nome del pacchetto) su un altro account google.A quanto pare non è possibile avere più di una chiave API per lo stesso nome del pacchetto (anche se il keystore è diverso!) sullo stesso account google.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top