我正在开发Android应用程序在用户具有Facebook的共享设施。 我有用户为Facebook的登录信息,现在我所要做的是这些登录信息应保存,直到应用程序不会被删除。
当我试图找到这个答案,我得到了一些答案,说明有关共享偏好。 但我不清除了它是如何工作的。
这里就是我试图做的,
Username = username.getText().toString();
PassWord = password.getText().toString();
其中,用户名和密码2个的EditText领域。 当用户第一次进入Facebook的进入,我应该保存在某个地方,这些数据对我今后的参考,让他不用再登录。
任何一个可以让我知道如何实现这一目标?
// 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
您可以使用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()方法和明确的()来从文件中删除喜好值的方法。
活动首选项:
共享偏好可以由其他应用程序组件中使用。 但是,如果你不需要共享与其它成分的喜好和希望拥有私人活动的偏好。 你可以做到这一点的的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。
不要使用偏好保存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);
}
}