[英]google analytics v4 on android crashing
我正在嘗試使用Google Analytics(分析)跟蹤我的應用統計信息。 我正嘗試按照http://java.dzone.com/articles/working-google-analytics-api上的教程進行操作,該教程已經被許多人發布並表示適用於他們。 這是我的代碼:
我的app_tracker.xml文件在下面
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:tools="http://schemas.android.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.android.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 android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
我的主要活動如下:
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.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);
在主要活動中。 我花了數周的時間試圖找到解決方法,但沒有成功。 有人可以幫我在我的Android項目中配置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: android.app.Application cannot be cast to com.mrana.send.SendApplication
10-29 15:31:13.062: E/AndroidRuntime(683): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
10-29 15:31:13.062: E/AndroidRuntime(683): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-29 15:31:13.062: E/AndroidRuntime(683): at android.app.ActivityThread.access$600(ActivityThread.java:130)
10-29 15:31:13.062: E/AndroidRuntime(683): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
10-29 15:31:13.062: E/AndroidRuntime(683): at android.os.Handler.dispatchMessage(Handler.java:99)
10-29 15:31:13.062: E/AndroidRuntime(683): at android.os.Looper.loop(Looper.java:137)
10-29 15:31:13.062: E/AndroidRuntime(683): at android.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.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-29 15:31:13.062: E/AndroidRuntime(683): at com.android.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: android.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 android.app.Activity.performCreate(Activity.java:5008)
10-29 15:31:13.062: E/AndroidRuntime(683): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
10-29 15:31:13.062: E/AndroidRuntime(683): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
10-29 15:31:13.062: E/AndroidRuntime(683): ... 11 more
第73行與op提到的使應用崩潰的行相同。
注意:我正在模擬器上對其進行測試。 此功能是否需要在真實設備(已安裝Play商店)上進行測試?
您需要在清單文件中添加應用程序名稱。
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name=".MainApplication" >
</application>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.