在Android应用程序在本地保存的Facebook登录信息(Saving facebook log

2019-10-30 15:07发布

我正在开发Android应用程序在用户具有Facebook的共享设施。 我有用户为Facebook的登录信息,现在我所要做的是这些登录信息应保存,直到应用程序不会被删除。

当我试图找到这个答案,我得到了一些答案,说明有关共享偏好。 但我不清除了它是如何工作的。

这里就是我试图做的,

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

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

其中,用户名和密码2个的EditText领域。 当用户第一次进入Facebook的进入,我应该保存在某个地方,这些数据对我今后的参考,让他不用再登录。

任何一个可以让我知道如何实现这一目标?

Answer 1:

// 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


Answer 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()方法和明确的()来从文件中删除喜好值的方法。

活动首选项:

共享偏好可以由其他应用程序组件中使用。 但是,如果你不需要共享与其它成分的喜好和希望拥有私人活动的偏好。 你可以做到这一点的的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。



Answer 3:

不要使用偏好保存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);
    }
}


文章来源: Saving facebook login details locally in android app