适用于Android的Google Analytics选择退出

时间:2014-04-18 20:54:09

标签: android google-analytics

我无法在Android上实施Google Analytics的退出偏好设置。我正在使用Analytics v4。我有偏好设置屏幕,但是当我取消选中该框时,它似乎不会阻止将信息发送到Google Analytics。我是否需要检查每项活动中的退出偏好,或者我在PreferenceActivity中遗漏了哪些内容?

到目前为止,这是我的代码。

package edu.ncsu.oncampus;


import com.google.android.gms.analytics.GoogleAnalytics;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;

public class Settings extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@SuppressWarnings("deprecation")

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
}


@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
        String key) {
     if (key.equals("trackingPreference")) {
       GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, true));
     }
  }
}

1 个答案:

答案 0 :(得分:1)

我能够解决这个问题。我最终使用了两个步骤来解决问题。第一步是在我创建的“设置”页面中注册首选项更改。 (请注意,我使用了复选框设置,因此我必须使用复选框的相反值来设置选择退出值。)我在此处仅发布了相关代码。

Settings.java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();

    SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);
    userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {

          @Override
          public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) 
          {
            if (key.equals("trackingPreference")) {
                GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(!sharedPreferences.getBoolean(key, false));
            } 
          }
        }); 
}

当我启动应用程序并设置退出设置时,我还会检查主要活动中的设置。

HomeActivity.java

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

    PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
    SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);

    boolean isOptedOut = userPrefs.getBoolean("trackingPreference", false);
    GoogleAnalytics.getInstance(this).setAppOptOut(!isOptedOut);
}