我无法在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));
}
}
}
答案 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);
}