首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Analytics Android应用集成

Google Analytics Android应用集成
EN

Stack Overflow用户
提问于 2016-10-07 19:31:54
回答 1查看 135关注 0票数 1

这是我第一次将谷歌分析与安卓应用程序集成在一起,我在遵循这些指示时遇到了问题https://developers.google.com/analytics/devguides/collection/android/v4/

看起来在将这部分代码添加到MainActivity.java中时,它无法工作,因此我无法编译应用程序。

//获取共享跟踪器实例

代码语言:javascript
复制
AnalyticsApplication application = (AnalyticsApplication) getApplication();
mTracker = application.getDefaultTracker();

我的代码:

build.gradle (应用程序)

代码语言:javascript
复制
      apply plugin: 'com.android.application'

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"

        defaultConfig {
            applicationId "com.developername.myapp"

            manifestPlaceholders = [manifestApplicationId: "${applicationId}",
                                    onesignal_app_id: "XXX",
                                    onesignal_google_project_number: "XXX"]

            minSdkVersion 15
            targetSdkVersion 23
            versionCode 6
            versionName "2.6"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.2.0'
        compile 'com.google.android.gms:play-services-ads:9.0.2'
        compile 'com.android.support:gridlayout-v7:23.2.0'
        compile 'com.onesignal:OneSignal:2.+@aar'
        compile 'com.google.android.gms:play-services-gcm:9.0.2'
        compile 'com.google.android.gms:play-services-analytics:9.0.2'
    }
    apply plugin: 'com.google.gms.google-services'

build.gradle (项目)

代码语言:javascript
复制
    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath 'com.google.gms:google-services:3.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Application.java

代码语言:javascript
复制
    package com.developername.myapp;

import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import android.util.Log;

import org.json.JSONObject;
import com.onesignal.OneSignal;


public class Radio extends Application{
    private Tracker mTracker;
    synchronized public Tracker getDefaultTracker() {
        if (mTracker == null) {
            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            mTracker = analytics.newTracker(R.xml.global_tracker);
        }
        return mTracker;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        OneSignal.startInit(this)
                .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
                .setAutoPromptLocation(true)
                .init();
    }



    private class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {
        /**
         * Callback to implement in your app to handle when a notification is opened from the Android status bar or
         * a new one comes in while the app is running.
         * This method is located in this Application class as an example, you may have any class you wish implement NotificationOpenedHandler and define this method.
         *
         * @param message        The message string the user seen/should see in the Android status bar.
         * @param additionalData The additionalData key value pair section you entered in on onesignal.com.
         * @param isActive       Was the app in the foreground when the notification was received.
         */
        @Override
        public void notificationOpened(String message, JSONObject additionalData, boolean isActive) {
            String additionalMessage = "";

            try {
                if (additionalData != null) {
                    if (additionalData.has("actionSelected"))
                        additionalMessage += "Pressed ButtonID: " + additionalData.getString("actionSelected");

                    additionalMessage = message + "\nFull additionalData:\n" + additionalData.toString();
                }

                Log.d("OneSignalExample", "message:\n" + message + "\nadditionalMessage:\n" + additionalMessage);
            } catch (Throwable t) {
                t.printStackTrace();
            }
        }


    }
}

MainActivity.java

代码语言:javascript
复制
package com.developername.myapp.activity;

import android.content.Intent;
import android.os.Bundle;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.developername.myapp.R;
import com.developername.myapp.Radio;
import com.developername.myapp.fragment.MainFragment;



public class MainActivity extends BaseActivity{
        AdView mAdView;
    private static boolean activityStarted;

    Radio application = (Radio) getApplication();
    mTracker = application.getDefaultTracker();


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


        if (activityStarted
                && getIntent() != null
                && (getIntent().getFlags() & Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) != 0) {
            finish();
            return;
        }

        activityStarted = true;

        mAdView = (AdView) findViewById(R.id.ad_view);


        // Create an ad request. Check your logcat output for the hashed device ID to
        // get test ads on a physical device. e.g.
        // "Use AdRequest.Builder.addTestDevice("ABCDEF012345") to get test ads on this device."
        AdRequest adRequest = new AdRequest.Builder().build();


        // Start loading the ad in the background.
        mAdView.loadAd(adRequest);

        addFragment(new MainFragment(), true);

    }
}

Android Studio似乎在以下位置发现了错误

代码语言:javascript
复制
Radio application = (Radio) getApplication();
mTracker = application.getDefaultTracker();

我哪里做错了?

请帮帮忙。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-04-18 15:42:15

您只需在应用程序级别将您的应用程序文件添加到清单文件。就像这样。

代码语言:javascript
复制
  <application
    android:name=".Application"
    android:allowBackup="false"
    android:icon="@mipmap/app_logo"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/app_logo"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:replace="android:allowBackup">

还要定义网络和网络状态权限。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39916207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档