我正在尝试将 Google Analytics 实施到我的 Android 应用程序中,但是我正在按照示例进行操作,它让我 createAppView 无法解析或不是一个字段。我认为这是因为它没有定义 - 但它不应该在谷歌的例子中定义吗?我没想到他们会犯这种错误,我觉得我做错了什么。
要查看我正在使用的示例,请查看此处的“完整示例”:
https://developers.google.com/analytics/devguides/collection/android/v3/advanced
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.AssetManager;
import android.graphics.drawable.AnimationDrawable;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.google.analytics.tracking.android.Fields;
import com.google.analytics.tracking.android.GAServiceManager;
import com.google.analytics.tracking.android.GoogleAnalytics;
import com.google.analytics.tracking.android.Logger.LogLevel;
import com.google.analytics.tracking.android.MapBuilder;
import com.google.analytics.tracking.android.Tracker;
import android.app.Application;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
@SuppressWarnings("unused")
public class StartActivity extends Activity {
private AnimationDrawable mGoButtonAnimation;
Context c;
boolean isAirPlaneMode;
int simState;
TelephonyManager tm;
boolean NetworkConnection = false;
AlertDialog mConfirmAlert = null;
private static GoogleAnalytics mGa;
private static Tracker mTracker;
private static final String GA_LABEL = "Google Analytics";
/*
* Google Analytics configuration values.
*/
// Placeholder property ID.
private static final String GA_PROPERTY_ID = "UA-XXXX-Y";
// Dispatch period in seconds.
private static final int GA_DISPATCH_PERIOD = 30;
// Prevent hits from being sent to reports, i.e. during testing.
private static final boolean GA_IS_DRY_RUN = false;
// GA Logger verbosity.
private static final LogLevel GA_LOG_VERBOSITY = LogLevel.INFO;
// Key used to store a user's tracking preferences in SharedPreferences.
private static final String TRACKING_PREF_KEY = "trackingPreference";
/*
* Method to handle basic Google Analytics initialization. This call will
* not block as all Google Analytics work occurs off the main thread.
*/
private void initializeGa() {
mGa = GoogleAnalytics.getInstance(this);
mTracker = mGa.getTracker(GA_PROPERTY_ID);
// Set dispatch period.
GAServiceManager.getInstance().setLocalDispatchPeriod(
GA_DISPATCH_PERIOD);
// Set dryRun flag.
mGa.setDryRun(GA_IS_DRY_RUN);
// Set Logger verbosity.
mGa.getLogger().setLogLevel(GA_LOG_VERBOSITY);
// Set the opt out flag when user updates a tracking preference.
SharedPreferences userPrefs = PreferenceManager
.getDefaultSharedPreferences(this);
userPrefs
.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
if (key.equals(TRACKING_PREF_KEY)) {
GoogleAnalytics
.getInstance(getApplicationContext())
.setAppOptOut(
sharedPreferences.getBoolean(key,
false));
}
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
initializeGa();
StartActivity.getGaTracker().set(Fields.SCREEN_NAME, GA_LABEL);
tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
simState = tm.getSimState();
System.out.println("Sim State" + simState);
Button goButton = (Button) findViewById(R.id.go_button);
// Set GO button to drawable animation
goButton.setBackgroundResource(R.drawable.go_button_animation);
mGoButtonAnimation = (AnimationDrawable) goButton.getBackground();
// check network availability
NetworkConnection = CheckNetworkAvailability
.CheckNetworkAvailability(StartActivity.this);
if (!NetworkConnection) {
showAlert("Network Connection is not Available");
}
isAirPlaneMode = isAirplaneModeOn(StartActivity.this);
goButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Start UpdateActivity
if (simState == TelephonyManager.SIM_STATE_ABSENT) {
showAlert("Sim Card is absent, Please insert a Net10 Sim Card");
} else if (isAirPlaneMode != false) {
showAlert("Please Insert a Net10 Sim Card or Turn on the AirPlane Mode and Re-Run the app");
} else if (simState == TelephonyManager.SIM_STATE_NETWORK_LOCKED
|| simState == TelephonyManager.SIM_STATE_PIN_REQUIRED
|| simState == TelephonyManager.SIM_STATE_PUK_REQUIRED
|| simState == TelephonyManager.SIM_STATE_UNKNOWN) {
showAlert("Sim Card is absent, Please insert a Net10 Sim Card");
} else if (simState == TelephonyManager.SIM_STATE_READY) {
Intent i = new Intent(StartActivity.this,
UpdateActivity.class);
startActivity(i);
finish();
}
}
});
}
@Override
public void onStart() {
super.onStart();
// Send a screen view when the Activity is displayed to the user.
StartActivity.getGaTracker().send(MapBuilder.createAppView.build());
}
/*
* Returns the Google Analytics tracker.
*/
public static Tracker getGaTracker() {
return mTracker;
}
/*
* Returns the Google Analytics instance.
*/
public static GoogleAnalytics getGaInstance() {
return mGa;
}
/**
* * Gets the state of Airplane Mode. * * @param context * @return true if
* enabled.
*/
public static boolean isAirplaneModeOn(Context context) {
return Settings.System.getInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) != 0;
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
// Animate GO button when corresponding window is in focus
mGoButtonAnimation.start();
}
private void showAlert(String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(message).setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
StartActivity.this.finish();
}
});
mConfirmAlert = builder.create();
mConfirmAlert.show();
}
}