2011-11-13 14 views
0

我不明白android中共享偏好的概念。共享的prefrerence由智能手機上的ather應用程序訪問? 如果我使用這個類保存偏好:在其他活動後PreferenceActivity保存爲私有值嗎?

public class ImpostazioniActivity extends PreferenceActivity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.impostazioni); 

    } } 

安達我使用:

SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(getContext()); 
    if(preference.getString("username","").length() == 0 || preference.getString("password","").length() == 0) 
     return false; 
    else 
     return true; 

這沒關係?我確定這些信息只能在我的應用程序中訪問? 感謝

+0

你用法很好。從PreferenceActivity延伸的任何活動都將使用應用程序的defaultSharedPreferences文件。 – dmon

+0

謝謝dmon!手機中的其他應用程序可以看到我的偏好? – sintetico82

+0

不可以,但它們只是純文本文件,插入手機時可以輕鬆閱讀。任何重要數據都應按照@hovanessyan的建議進行加密。 – dmon

回答

1

報價:

要獲得SharedPreferences對象爲您的應用程序,使用兩種 方法之一:

getSharedPreferences() - 如果你需要多首由名稱標識 文件使用此,你用第一個參數指定。

getPreferences() - 如果您只需要一個首選項文件 您的活動,請使用此選項。因爲這將是你的 活動的唯一偏好設置文件,你不提供名字

所以,你應該用getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE)其中PREFS_FILENAME是你想你的應用程序使用, Context.MODE_PRIVATE是一個文件創建模式文件,其中創建的文件只能由調用應用程序訪問(或共享相同用戶ID的所有應用程序)。

編輯:我看着你的代碼,如果你打算存儲任何敏感的用戶信息(如密碼),你必須先加密它!看看這個ObscuredSharedPreferences implementation。它將使您能夠在SharedPreferences中加密/解密您的數據。

相關問題