2014-12-11 3 views
8

Ho appena seguito il tutorial this per aggiungere Google Analytics SDK v4 in un'app per Android. Il problema ora è che quando eseguo l'app viene visualizzata una schermata nera su qualsiasi vista che ho impostato con il monitoraggio. Ad esempio sotto i metodi onCreate, onStart e onStop dalla prima vista dopo la schermata iniziale. La schermata iniziale si carica bene, quindi ho solo una schermata nera sulla vista. Se hai commentato il codice di analisi tutto funzionaAndroid Google Analytics che causa schermo nero

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.landing_screen); 


     //Get a Tracker (should auto-report) 


     //Define font for use 
     Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/cabinregular.otf"); 

     //Set font to all elements 
     ((TextView) findViewById(R.id.textFlat)).setTypeface(typeface); 
     ((TextView) findViewById(R.id.textCool)).setTypeface(typeface); 
     ((TextView) findViewById(R.id.textWarm)).setTypeface(typeface); 
     ((TextView) findViewById(R.id.textPastels)).setTypeface(typeface); 
     ((TextView) findViewById(R.id.textDecades)).setTypeface(typeface); 
     ((TextView) findViewById(R.id.textNeutrals)).setTypeface(typeface); 
     ((TextView) findViewById(R.id.textMidTones)).setTypeface(typeface); 
     //((TextView) findViewById(R.id.appHeaderText)).setTypeface(typeface); 


     //Create all the listeners to catch button presses 
     ImageButton buttonFlat = (ImageButton) findViewById(R.id.buttonFlat); 
     buttonFlat.setOnClickListener(this); 
     ImageButton buttonCool = (ImageButton) findViewById(R.id.buttonCool); 
     buttonCool.setOnClickListener(this); 
     ImageButton buttonWarm = (ImageButton) findViewById(R.id.buttonWarm); 
     buttonWarm.setOnClickListener(this); 
     ImageButton buttonPastels = (ImageButton) findViewById(R.id.buttonPastels); 
     buttonPastels.setOnClickListener(this); 
     ImageButton buttonDecades = (ImageButton) findViewById(R.id.buttonDecades); 
     buttonDecades.setOnClickListener(this); 
     ImageButton buttonNeutrals = (ImageButton) findViewById(R.id.buttonNeutrals); 
     buttonNeutrals.setOnClickListener(this); 
     ImageButton buttonMidTones = (ImageButton) findViewById(R.id.buttonMidTones); 
     buttonMidTones.setOnClickListener(this); 

     ((colorlibApplicationClass) getApplication()).getTracker(colorlibApplicationClass.TrackerName.APP_TRACKER); 




    } 

    public void onStart() 
    { 
     super.onStart(); 
     //Get an Analytics tracker to report app starts & uncaught exceptions etc. 
     GoogleAnalytics.getInstance(this).reportActivityStart(this); 
    } 

    public void onStop() 
    { 
     super.onStop(); 
     //Stop the analytics tracking 
     GoogleAnalytics.getInstance(this).reportActivityStop(this); 
    } 

Ecco la classe di applicazione;

package com.exampleapp.colorlib; 



     import android.app.Application; 

     import com.google.android.gms.analytics.GoogleAnalytics; 
     import com.google.android.gms.analytics.Tracker; 

     import java.util.HashMap; 

public class colorlibApplicationClass extends Application { 

    // The following line should be changed to include the correct property id. 
    private static final String PROPERTY_ID = "UA-REMOVED-FOR-SECURITY"; 

    //Logging TAG 
    private static final String TAG = "MyApp"; 

    public static int GENERAL_TRACKER = 0; 

    public enum TrackerName { 
     APP_TRACKER, // Tracker used only in this app. 
     GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking. 
     ECOMMERCE_TRACKER,// Tracker used by all the apps from a company. eg: roll-up tracking. 

    } 

    HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>(); 

    public colorlibApplicationClass() { 
     super(); 
    } 

    synchronized Tracker getTracker(TrackerName trackerId) { 
     if (!mTrackers.containsKey(trackerId)) { 

      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 
      Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(R.xml.app_tracker) 
        : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(PROPERTY_ID) 
        : analytics.newTracker(R.xml.ecommerce_tracker); 
      mTrackers.put(trackerId, t); 



     } 
     return mTrackers.get(trackerId); 
    } 
} 
+0

Puoi pubblicare il logcat? – AesSedai101

+0

Il registro è vuoto. – jskrwyk

risposta

13

È un problema dell'ultima versione. Controlla here per maggiori informazioni.

Nel frattempo forse è meglio usare una versione precedente. Questo funziona bene:

di compilazione 'com.google.android.gms: play-servizi: 6.1 +.'

Edit: Rimozione della configurazione di meta-dati globali dal AndroidManifest ha funzionato bene.

+0

Quando rimuovo i metadati di configurazione globale, funziona di nuovo ma non invia gli schermi correttamente. Cambia il Gradle alla versione 6.1 sembra funzionare e l'invio di schermi però. – jskrwyk