Java 如何在此代码中存储用户数据(共享首选项)?

Java 如何在此代码中存储用户数据(共享首选项)?,java,android,facebook,Java,Android,Facebook,我的主页是facebook登录活动,将进入导航抽屉。一切正常,但每次打开应用程序时我都需要登录。我试着做SharedReferences和accesstoken。我不知道如何使用此代码。请告诉我 这是我的Main.java public class Main extends AppCompatActivity { CallbackManager callbackManager; LoginButton loginButton; //facebookLoginButton @Override

我的主页是facebook登录活动,将进入导航抽屉。一切正常,但每次打开应用程序时我都需要登录。我试着做SharedReferences和accesstoken。我不知道如何使用此代码。请告诉我

这是我的Main.java

public class Main extends AppCompatActivity {
CallbackManager callbackManager;
LoginButton loginButton; //facebookLoginButton


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FacebookSdk.sdkInitialize(getApplicationContext());
    callbackManager = CallbackManager.Factory.create();

    setContentView(R.layout.activity_main);

    loginButton = (LoginButton) findViewById(R.id.login_button);
    assert loginButton != null;
    loginButton.setReadPermissions("email");

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult login_result) {

            getUserInfo(login_result);
        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException exception) {

        }
    });
}

protected void getUserInfo(LoginResult login_result){

    GraphRequest data_request = GraphRequest.newMeRequest(
            login_result.getAccessToken(),
            new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(
                        JSONObject json_object,
                        GraphResponse response) {

                    Intent intent = new Intent(Main.this,HomeActivity.class);
                    intent.putExtra("jsondata",json_object.toString());
                    startActivity(intent);
                }
            });
    Bundle parameter = new Bundle();
    parameter.putString("fields", "id,name,email,picture.width(150).height(150)");
    data_request.setParameters(parameter);
    data_request.executeAsync();

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
    Log.e("data", data.toString());
}

 @Override
protected void onResume() {
    super.onResume();

}

@Override
protected void onPause() {
    super.onPause();

}
}
public类主活动{
CallbackManager CallbackManager;
LoginButton LoginButton;//facebookLoginButton
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getApplicationContext());
callbackManager=callbackManager.Factory.create();
setContentView(R.layout.activity_main);
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
断言登录按钮!=null;
loginButton.setReadPermissions(“电子邮件”);
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(登录结果登录结果){
getUserInfo(登录结果);
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常){
}
});
}
受保护的无效getUserInfo(登录结果登录结果){
GraphRequest数据_请求=GraphRequest.newmereRequest(
登录\u结果。getAccessToken(),
新建GraphRequest.GraphJSONObjectCallback(){
@凌驾
公共空间未完成(
JSONObject json_对象,
GraphResponse(反应){
意向意向=新意向(Main.this、HomeActivity.class);
putExtra(“jsondata”,json_object.toString());
星触觉(意向);
}
});
Bundle参数=新Bundle();
参数.putString(“字段”、“id、名称、电子邮件、图片.宽度(150).高度(150)”;
数据请求设置参数(参数);
数据_请求.executeAsync();
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
Log.e(“data”,data.toString());
}
@凌驾
受保护的void onResume(){
super.onResume();
}
@凌驾
受保护的void onPause(){
super.onPause();
}
}

请提供帮助。

事实上,Facebook SDK存储了您所需的一切。例如,您可以通过检查
null
的访问令牌来检查用户是否已登录
AccessToken.getCurrentAccessToken()
如果用户未登录,则返回
null
。您不需要存储配置文件信息,SDK已经这样做了,例如通过调用
profile.getCurrentProfile()
您可以检索当前登录用户的一些基本信息。

初始化变量

SharedPreferences sharedpreferences;
在OnCreate()上

保存您的数据

SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putString("name", name);
        editor.putString("phone", phone);
        editor.commit();
获取已保存数据的共享首选项

SharedPreferences settins = PreferenceManager
        .getDefaultSharedPreferences(Youractivity.this);
     String pref1=settings.getString("name", "anon");
     String pref2=settings.getString("Phone", "anon");

最好在保存和访问时命名共享首选项。这在多个共享首选项的情况下很有用

在要保存的活动上,键入:

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref1", MODE_PRIVATE);
editor = pref.edit(); 
editor.putString("firstName",firstName);
editor.commit();
 SharedPreferences prefs = getApplicationContext().getSharedPreferences("MyPref1", Context.MODE_PRIVATE);
 String firstName = prefs.getString("firstName", "null");
在要访问的活动上,键入:

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref1", MODE_PRIVATE);
editor = pref.edit(); 
editor.putString("firstName",firstName);
editor.commit();
 SharedPreferences prefs = getApplicationContext().getSharedPreferences("MyPref1", Context.MODE_PRIVATE);
 String firstName = prefs.getString("firstName", "null");

遵循教程!!你可以在其他问题中搜索它,而不用问新问题。这个查询在stackoverflow和google上都有很多结果