Android-谷歌分析V4例外

Android-谷歌分析V4例外,android,google-analytics,analytics,google-analytics-firebase,Android,Google Analytics,Analytics,Google Analytics Firebase,因此,我按照本()教程将Google Analytics v4添加到我的应用程序中,但在尝试运行它时,出现了如下错误: 09-13 12:52:01.122 31624-31624/com.rivert.unlockscope E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.rivert.unlockscope, PID: 31624 java.lang.RuntimeException: Unable to start activit

因此,我按照本()教程将Google Analytics v4添加到我的应用程序中,但在尝试运行它时,出现了如下错误:

09-13 12:52:01.122  31624-31624/com.rivert.unlockscope E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.rivert.unlockscope, PID: 31624
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rivert.unlockscope/com.rivert.unlockscope.unlockscope}: java.lang.ClassCastException: android.app.Application cannot be cast to com.rivert.unlockscope.MyApplication
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2187)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2236)
        at android.app.ActivityThread.access$800(ActivityThread.java:138)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5034)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.rivert.unlockscope.MyApplication
        at com.rivert.unlockscope.unlockscope.onCreate(unlockscope.java:37)
        at android.app.Activity.performCreate(Activity.java:5241)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2151)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2236)
        at android.app.ActivityThread.access$800(ActivityThread.java:138)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5034)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
        at dalvik.system.NativeStart.main(Native Method)
        09-13 12:52:02.594  31624-31624/com.rivert.unlockscope I/Process﹕ Sending signal. PID: 31624 SIG: 9
第37行的代码是:

((MyApplication)getApplication()).getTracker(MyApplication.TrackerName.APP_TRACKER)

有人能帮我吗?谢谢

乐:

我的应用程序代码

package com.rivert.unlockscope;

import android.app.Application;

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

import java.util.HashMap;

/**
 * Created by Coman Alexandru on 12/09/2014.
 */
public class MyApplication extends Application {

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

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

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 ecommerce transactions from a company.
}

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

public MyApplication() {
    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);
}

}
package com.rivert.unlockscope;
导入android.app.Application;
导入com.google.android.gms.analytics.GoogleAnalytics;
导入com.google.android.gms.analytics.Tracker;
导入java.util.HashMap;
/**
*由Coman Alexandru于2014年9月12日创建。
*/
公共类MyApplication扩展了应用程序{
//应更改以下行以包含正确的属性id。
私有静态最终字符串属性\u ID=“UA-XXXXXXXX-X”;
//日志标签
私有静态最终字符串TAG=“TestName”;
公共静态int-GENERAL_-TRACKER=0;
公共枚举跟踪名{
APP_TRACKER,//仅在此应用中使用的跟踪器。
GLOBAL_TRACKER,//公司所有应用程序使用的跟踪器。例如:汇总跟踪。
电子商务\ U跟踪器,//公司所有电子商务交易使用的跟踪器。
}
HashMap mTrackers=新HashMap();
公共应用程序(){
超级();
}
同步跟踪程序getTracker(TrackerName trackerId){
如果(!mTrackers.containsKey(trackerId)){
GoogleAnalytics analytics=GoogleAnalytics.getInstance(this);
Tracker t=(trackerId==TrackerName.APP\u Tracker)?analytics.newTracker(R.xml.APP\u Tracker)
:(trackerId==TrackerName.GLOBAL\u TRACKER)?analytics.newTracker(属性\u ID)
:analytics.newTracker(R.xml.ecommerce\u tracker);
mTrackers.put(trackerId,t);
}
返回mTrackers.get(trackerId);
}
}
我的日志:


我以前也遇到过同样的问题。您需要在清单文件中添加应用程序名称

 <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:name=".MainApplication" >
 </application>

事实上,您必须将您的android:name设置为您创建的扩展应用程序的类。例如,如果您的类是:

public class Thisnameinmanifestconfig 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;
}
您的舱单应为:

<application
    android:name=".Thisnameinmanifestconfig"
    .../>
</application>


就这样。我希望它能有所帮助。

我能看看我的应用程序的代码吗?好的,你可以在第一段中发布的教程中找到它。问题是教程很可能是正确的。当你学习教程时,有时会犯一些不必要的错误。因此,当我试图解决您的问题时,您的代码对我来说更重要。通过一些检查,您是否在清单中声明了MyApplication类?您的MyApplication类是否扩展了android.app.Application?否。我的MyApplication类没有在AndroidManifest中声明:(。我在教程中找不到任何内容。我认为只有活动应该在AndroidManifest中声明。这解决了您的问题吗?