Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Google Analytics Causing Black Screen

I just followed this tutorial for adding Google Analytics SDK v4 into an android app. Problem now is that when I run the app it just gives a black screen on any view I've setup with tracking. For example below the is the onCreate, onStart and onStop methods from the first view after the splash screen. The splash screen loads fine, then I just get a black screen on the view. If you commented out the analytics code everything work

    @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);
    }

Here's the application class;

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);
    }
}
like image 842
Flatlyn Avatar asked Dec 11 '14 13:12

Flatlyn


People also ask

What is Google Analytics in Android?

Google Analytics collects usage and behavior data for your web app. The SDK logs two primary types of information: Events: What is happening in your app, such as user actions, system events, or errors.

How do I check Google Analytics?

You can sign in to your Analytics account from http://www.google.com/analytics. Click Sign in (at top right), and select Analytics.


1 Answers

It's a problem of the last version. Check here for more info.

Meanwhile maybe it's better to use an older version. This one works fine:

compile 'com.google.android.gms:play-services:6.1.+'

Edit: Removing the global configuration meta-data from the AndroidManifest worked fine.

like image 166
MarcSB Avatar answered Oct 21 '22 05:10

MarcSB