2011-09-02 94 views
0

我正在開發一個Android應用程序,其中用戶具有Facebook共享功能。我有Facebook的用戶登錄細節,現在我想要做的就是保存這些登錄信息,直到應用程序未被刪除。在android應用程序中本地保存facebook登錄詳細信息

當我試圖找到答案時,我得到了一些答案,說明共享偏好。但我不清楚它是如何工作的。

這裏就是我試圖做的,

Username = username.getText().toString(); 

PassWord = password.getText().toString(); 

,其中用戶名和密碼2個的EditText領域。當用戶第一次進入Facebook時,我應該將這些數據保存在某處供我未來參考,以便他不必再次登錄。

任何人都可以讓我知道如何做到這一點?

+1

沒有辦法,我會給你我的登錄名/密碼。學習[如何使用Facebook連接](http://stackoverflow.com/questions/2498985/how-to-integrate-facebook-connect-with-android)。 – rds

回答

2
// Save your info 
SharedPreferences settings = getSharedPreferences("my_file_name", 0); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("username", username.getText().toString()); 
editor.putString("password", password.getText().toString()); 
editor.commit(); 

// Obtain your info 
SharedPreferences settings = getSharedPreferences("my_file_name", 0); 
String username = settings.getString("username", ""); 
String password = settings.getString("password", ""); 

的文件將被創建在:

data/data/[your.package.path]/shared_prefs/[your.package.path]_preferences.xml 
2

您可以使用sharedPreference這一點。

許多應用程序可能提供一種方法來捕獲用戶對特定應用程序或活動的設置的首選項。爲了支持這一點,Android提供了一組簡單的API。

首選項通常是名稱值對。它們可以作爲「共享首選項」存儲在應用程序中的各種活動中(請注意,目前不能在各個進程間共享)。或者它可能是需要針對某個活動存儲的內容。

Shared Preferences: The shared preferences can be used by all the components (activities, services etc) off the applications. 

Activity handled preferences: These preferences can only be used with in the activity and can not be used by other components of the application. 

共享偏好:

共享偏好與Context類的getSharedPreferences方法的幫助下管理。首選項存儲在默認文件(1)中,或者您可以指定用於引用首選項的文件名(2)。

(1)這是在指定的文件名

public static final String PREF_FILE_NAME = "PrefFile"; 
    SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE); 

MODE_PRIVATE是偏好操作模式如何獲得實例。這是默認模式,意味着創建的文件只能被調用應用程序訪問。其他支持的兩種模式是MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。在MODE_WORLD_READABLE中,其他應用程序可以讀取創建的文件,但不能修改它。在MODE_WORLD_WRITEABLE的情況下,其他應用程序也對創建的文件具有寫入權限。

(2)推薦的方法是通過默認模式

SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context); 

最後使用,未經指定文件名,一旦你的喜好來說,這裏是你如何檢索來自存儲的值偏好:

int storedPreference = preferences.getInt("storedInt", 0); 

要將值存儲在首選項文件SharedPreference.Editor對象必須使用。編輯器是SharedPreference類的嵌套接口。

SharedPreferences.Editor editor = preferences.edit(); 
editor.putInt("storedInt", storedPreference); // value to store 
editor.commit(); 

編輯器還支持像remove()和clear()這樣的方法從文件中刪除首選項值。

活動設定:

共享偏好可以由其他應用程序組件中使用。但是,如果您不需要與其他組件共享偏好並希望擁有活動的私人偏好。你可以在活動的getPreferences()方法的幫助下做到這一點。 getPreference方法使用getSharedPreferences()方法和活動類的名稱作爲首選項文件名。

以下是代碼即可獲得優惠

SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
int storedPreference = preferences.getInt("storedInt", 0); 

存儲值的代碼也一樣共享偏好的情況下。

SharedPreferences preferences = getPreference(MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putInt("storedInt", storedPreference); // value to store 
editor.commit(); 

您還可以使用其他方法,如將活動狀態存儲在數據庫中。注意Android還包含一個名爲android.preference的包。該包定義了實現應用程序首選項UI的類。

0

不要使用偏好保存Facebook的數據:

請onCreate方法使用此代碼:

if (isLoggedIn()) { 
     layout_after_fb_login.setVisibility(View.VISIBLE); 
     updateUI(); 
    } else { 
     layout_after_fb_login.setVisibility(View.GONE); 
    } 

////

private boolean isLoggedIn() { 
    AccessToken accesstoken = AccessToken.getCurrentAccessToken(); 
    return !(accesstoken == null || accesstoken.getPermissions().isEmpty()); 
} 

private void updateUI() { 
    Profile profile = Profile.getCurrentProfile(); 
    if (null != profile) { 
     profilePictureView.setProfileId(profile.getId()); 
     userNameView.setText(String.format("%s %s", profile.getFirstName(), profile.getLastName())); 
     layout_after_fb_login.setVisibility(View.VISIBLE); 
    } else { 
     layout_after_fb_login.setVisibility(View.GONE); 
    } 
} 
相關問題