有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓崩溃上的java google analytics v4

我正在尝试使用谷歌分析追踪我的应用统计数据。我试着在http://java.dzone.com/articles/working-google-analytics-api上跟随一些人发布的教程,并说它对他们有用。这是我的密码:

我的应用程序跟踪程序。xml文件在下面

<?xml version="1.0" encoding="utf-8"?>
<resources 
xmlns:tools="http://schemas.安卓.com/tools" 
tools:ignore="TypographyDashes">
<span style="line-height: 1.5; font-style: inherit; font-weight: inherit;">
</span>

<string name="ga_trackingId">UA-XXXXXXX-1</string>

<string name="ga_sampleFrequency">100.0</string>

<bool name="ga_autoActivityTracking">true</bool>

<bool name="ga_reportUncaughtExceptions">true</bool>

<integer name="ga_sessionTimeout">-1</integer>


<screenName name="game">game</screenName>
<screenName name="settings">settings</screenName>
</resources>

我的global_tracker xml文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources 
xmlns:tools="http://schemas.安卓.com/tools" 
tools:ignore="TypographyDashes">

<span style="line-height: 1.5; font-style: inherit; font-weight: inherit;">

</span>

<string name="ga_logLevel">verbose</string>

<integer name="ga_dispatchPeriod">30</integer>

<bool name="ga_dryRun">false</bool>

<string name="games">games</string>
<string name="settings">settings</string>
</resources>

在我的清单文件中,我输入了以下代码块:

<meta-data  安卓:name="com.google.安卓.gms.version"
安卓:value="@integer/google_play_services_version" />

我的主要活动如下:

import com.google.安卓.gms.analytics.GoogleAnalytics;
import com.google.安卓.gms.analytics.Tracker;

public class MainActivity extends Activity implements View.OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

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

 }

应用程序应该具有的MyApplication类如下所示

public class MyApplication extends Application {


private static final String PROPERTY_ID = "UA-XXXXXXXX-1";

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 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(PROPERTY_ID)
: (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(PROPERTY_ID)
: analytics.newTracker(R.xml.ecommerce_tracker);
mTrackers.put(trackerId, t);

}
return mTrackers.get(trackerId);
}
}

当程序运行时,它到达行时崩溃

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

在主要活动中。我花了几个星期的时间试图找到一个解决这个问题的方法,但没有成功。有人能帮我在安卓项目中配置google analytics v4吗

我正在编辑这篇文章(因为我收到了同样的问题)&;这是logcat

:10-29 15:31:13.062: E/AndroidRuntime(683): FATAL EXCEPTION: main
10-29 15:31:13.062: E/AndroidRuntime(683): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mrana.send/com.mrana.send.HomeActivity}: java.lang.ClassCastException: 安卓.app.Application cannot be cast to com.mrana.send.SendApplication
10-29 15:31:13.062: E/AndroidRuntime(683):  at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
10-29 15:31:13.062: E/AndroidRuntime(683):  at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-29 15:31:13.062: E/AndroidRuntime(683):  at 安卓.app.ActivityThread.access$600(ActivityThread.java:130)
10-29 15:31:13.062: E/AndroidRuntime(683):  at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
10-29 15:31:13.062: E/AndroidRuntime(683):  at 安卓.os.Handler.dispatchMessage(Handler.java:99)
10-29 15:31:13.062: E/AndroidRuntime(683):  at 安卓.os.Looper.loop(Looper.java:137)
10-29 15:31:13.062: E/AndroidRuntime(683):  at 安卓.app.ActivityThread.main(ActivityThread.java:4745)
10-29 15:31:13.062: E/AndroidRuntime(683):  at java.lang.reflect.Method.invokeNative(Native Method)
10-29 15:31:13.062: E/AndroidRuntime(683):  at java.lang.reflect.Method.invoke(Method.java:511)
10-29 15:31:13.062: E/AndroidRuntime(683):  at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-29 15:31:13.062: E/AndroidRuntime(683):  at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-29 15:31:13.062: E/AndroidRuntime(683):  at dalvik.system.NativeStart.main(Native Method)
10-29 15:31:13.062: E/AndroidRuntime(683): Caused by: java.lang.ClassCastException: 安卓.app.Application cannot be cast to com.mrana.send.SendApplication
10-29 15:31:13.062: E/AndroidRuntime(683):  at com.mrana.send.HomeActivity.onCreate(HomeActivity.java:73)
10-29 15:31:13.062: E/AndroidRuntime(683):  at 安卓.app.Activity.performCreate(Activity.java:5008)
10-29 15:31:13.062: E/AndroidRuntime(683):  at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
10-29 15:31:13.062: E/AndroidRuntime(683):  at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
10-29 15:31:13.062: E/AndroidRuntime(683):  ... 11 more

第73行与op提到的使应用程序崩溃的行相同

注意:我正在emulator上测试它。此功能是否需要在实际设备上测试(已安装play store)


共 (1) 个答案

  1. # 1 楼答案

    您需要在清单文件中添加应用程序名称

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