2011-08-01 117 views
0

我開發了一個應用程序,它將布爾值存儲爲SharePreference,以確定應用程序是否在安裝後第一次啓動。問題是,當我卸載並重新安裝時,它仍然記得我之前安裝時設置的所有SharedPreference,我無法檢查應用程序在安裝後是否第一次啓動。 這發生在三星Galaxy S版本2.2.1重新安裝後Android SharedPreference不清晰

我很感謝您關於檢查第一次啓動的方式的建議。

我發現它也很奇怪,但我用其他設備,相同版本和差異版本進行了測試,未發現此問題。我只在一臺設備上才發現這個問題。

這裏是我的代碼,請告訴我,如果你發現不對勁:

public static boolean isFirstStart(Context context) { 
    SharedPreferences pref = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); 
    boolean isFirstTime = pref.getBoolean(KEY_IS_FIRST_TIME, true); 
    if (isFirstTime) { 
     SharedPreferences.Editor editor = pref.edit(); 
     editor.putBoolean(KEY_IS_FIRST_TIME, false); 
     editor.putBoolean("test", false); 
     editor.commit(); 
    } 

    return isFirstTime; 
} 

這個方法還真只有在第一次安裝,但假的,稍後再安裝。 注意:我總是卸載並安裝來測試它。我試圖清除這個應用程序中的數據,但設置問題仍然是一樣的,但是如果執行pref.edit()。clear()。commit();它將被清除以進行此安裝。

+0

你確定嗎? – Rasel

+0

你在其他設備上試過嗎? – Sver

+0

請顯示讀取首選項並驗證它的代碼。 – cdhabecker

回答

0

我也使用三星galaxy s版本2.2.1,並使用SharedPreference,我沒有得到任何這樣的問題。確保您沒有使用全局SharedPreference名稱並重新檢查您的代碼。我相信你會找到它,如果你仍然發現問題,然後plz顯示你的代碼。

+0

這裏是我的代碼:公共靜態布爾isFirstStart(上下文上下文)SharedPreferences pref = context.getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE); boolean isFirstTime = pref.getBoolean(KEY_IS_FIRST_TIME,true);如果(isFirstTime){ SharedPreferences.Editor editor = pref.edit(); editor.putBoolean(KEY_IS_FIRST_TIME,false); editor.putBoolean(「test」,false); editor.commit(); } return isFirstTime; } – polen

+0

你的代碼看起來不錯。更改首選項名稱可能與我猜想的其他應用程序的首選項名稱衝突。 –

+0

好吧,我會嘗試。我已經測試谷歌iosched 2011,它在這個設備上有相同的問題。它不顯示第二次安裝的EULA。 – polen

1

是的,我遇到了同樣的問題。如果您的應用程序已安裝在設備中,並且您嘗試在舊應用程序的頂部安裝新應用程序,則會出現此問題。 Android只是覆蓋東西,從而讓你的偏好保持原樣。所以你必須做的是,你必須卸載你的應用程序,只有在這之後,你才能重新安裝你的應用程序。