2014-04-18 86 views
0

我在Android上執行Google Analytics停用偏好設置時遇到問題。我正在使用Analytics(分析)v4。我的首選項屏幕可以正常工作,但是當我取消選中該框時,似乎無法阻止向Google Analytics發送信息。我是否需要檢查每項活動中的選擇退出首選項還是缺少PreferenceActivity中的某些內容?適用於Android的Google Analytics(分析)停用

這是我的代碼到目前爲止。

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

我能解決這個問題。我最終使用瞭解決方案的兩步流程。第一步是在我創建的設置頁面中註冊首選項更改。 (請注意,我爲此使用了一個複選框設置,因此我必須使用複選框的相反值來設置退出值。)我僅在此處發佈相關代碼。

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); 
} 
相關問題