java - 设置 Google Analytics 时出错

标签 java android google-analytics

我正在尝试在我的应用程序中设置谷歌分析。我按照下面的谷歌教程 https://developers.google.com/analytics/devguides/collection/android/v4/

但出现以下错误

Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to

当我将下面的代码放入 MainActivity 中的创建时:

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

AnalyticsApplication 类:

import android.app.Application;

导入com.google.android.gms.analytics.GoogleAnalytics; 导入 com.google.android.gms.analytics.Tracker;

公共(public)类 AnalyticsApplication 扩展了应用程序{

private Tracker mTracker;

synchronized public Tracker getDefaultTracker() {
    if (mTracker == null) {
        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
        // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
        mTracker = analytics.newTracker(R.xml.global_tracker);
    }
    return mTracker;
}

}

GRADLE项目

classpath 'com.google.gms:google-services:1.5.0-beta2'

梯度模块

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.google.android.gms:play-services-ads:8.3.0'
compile 'com.google.android.gms:play-services-analytics:8.3.0'


compile 'com.google.android.gms:play-services-appindexing:8.3.0'

} 应用插件:'com.google.gms.google-services'

AndroidMaifest

<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


    <service
        android:name=".CallDetectService"
        android:enabled="true"
        android:exported="false" >
    </service>

    <receiver
        android:name=".RingerModeStateReceiver"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.media.RINGER_MODE_CHANGED" />
        </intent-filter>
    </receiver>
    <!-- ATTENTION: This was auto-generated to add Google Play services to your project for
         App Indexing.  See https://g.co/AppIndexing/AndroidStudio for more information. -->
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

</application>

我还将配置文件复制到应用程序目录中。 如果我省略主 Activity 中的代码,我的应用程序将运行,但不会显示任何内容 在我的 Analytics 帐户中。

任何帮助将不胜感激。 我按照谷歌教程进行操作,但没有发生任何事情,然后当我将代码放入主 Activity 中时,我的应用程序会崩溃。

最佳答案

要在 list 文件中声明应用程序类,请在应用程序标记中使用 android:name="com.example.AnalyticsApplication"。

或者使用分析帮助器类:

public class AnalyticsHelper {

    private static HashMap<TrackerName, Tracker> sTrackers = new HashMap<TrackerName, Tracker>();

    public static synchronized Tracker getTracker(Context context, TrackerName trackerId) {
        if (!sTrackers.containsKey(trackerId)) {

            GoogleAnalytics analytics = GoogleAnalytics.getInstance(context);
            Tracker t = null;

            switch (trackerId) {
                case APP_TRACKER:
                    t = analytics.newTracker(R.xml.analytics_app_tracker);
                    break;
            }

            sTrackers.put(trackerId, t);
        }
        return sTrackers.get(trackerId);
    }

    public enum TrackerName {
        APP_TRACKER, // App specific tracker ID
    }
}

并调用您的Application类的AnalyticsHelper.getTracker(this, TrackerName.APP_TRACKER)

关于java - 设置 Google Analytics 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34416873/

相关文章:

java - MAC OS AppleScript - 静默安装 Java?

java - 创建一串索引数字

android - 更改微调器下拉图标

java - 在 SLF4J/Logback 中使用标记的最佳实践

java - 无状态 session Bean 与无状态单例

javascript - 分析 API 包括子页面

google-analytics - 如何使用 c#analytics api v3 在谷歌分析中插入网页浏览量

android - 每个应用程序只有一个 BroadcastReceiver?

android - 如何在 sqlite 数据库中保存微调器的值

android - Espresso 2 升级后测试失败(失败 : Instrumentation run failed due to 'java.lang.IllegalAccessError' )