Java 在会话中存储Fb用户数据并在其他活动中使用

Java 在会话中存储Fb用户数据并在其他活动中使用,java,android,facebook,session,Java,Android,Facebook,Session,我正在使用Facebook登录,成功登录后,在登录活动屏幕上移动到主活动。我想在主要活动中显示Facebook用户的详细信息,如姓名、电子邮件、位置、性别、fbid。我在SharedReferences的帮助下在会话中存储数据。现在我想在我的主要活动中使用会话值。我正在尝试HashMap,但它只适用于2个值。下面是我的登录活动 fbloginbtn.registerCallback(callbackManager, new FacebookCallback<LoginResult>(

我正在使用Facebook登录,成功登录后,在登录活动屏幕上移动到主活动。我想在主要活动中显示Facebook用户的详细信息,如姓名、电子邮件、位置、性别、fbid。我在
SharedReferences
的帮助下在会话中存储数据。现在我想在我的主要活动中使用会话值。我正在尝试
HashMap
,但它只适用于2个值。下面是我的登录活动

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

                GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {

                            @Override
                            public void onCompleted(JSONObject object, GraphResponse response) {
                                Log.v("Main", response.toString());
                                setProfileToView(object);
                            }
                        });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,name,email,gender,birthday,location");
                request.setParameters(parameters);
                request.executeAsync();


                session.setFblogin(true);

                Intent i = new Intent(LoginActivity.this,MainActivity.class);
                startActivity(i);
                finish();
            }

private void setProfileToView(JSONObject jsonObject) {
        try {
            String fbemail= jsonObject.getString("email");
            String fbgender=jsonObject.getString("gender");
            String fbName= jsonObject.getString("name");
            String fbLocation=jsonObject.getString("location");
            String fbid = jsonObject.getString("id");

            profilePictureView.setPresetSize(ProfilePictureView.NORMAL);
            profilePictureView.setProfileId(jsonObject.getString("id"));

            String propic = "https://graph.facebook.com/" + fbid+ "/picture?type=large";

            session.setFbLogin(fbid, fbName, propic, fbLocation, fbgender, fbemail);



        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
fbloginbtn.registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
GraphRequest请求=GraphRequest.newmereRequest(
loginResult.getAccessToken(),
新建GraphRequest.GraphJSONObjectCallback(){
@凌驾
未完成公共无效(JSONObject对象,GraphResponse响应){
Log.v(“Main”,response.toString());
setProfileToView(对象);
}
});
Bundle参数=新Bundle();
参数.putString(“字段”、“id、姓名、电子邮件、性别、生日、位置”);
请求。设置参数(参数);
request.executeAsync();
session.setFblogin(true);
意图i=新意图(LoginActivity.this,MainActivity.class);
星触觉(i);
完成();
}
私有void setProfileToView(JSONObject JSONObject){
试一试{
String fbeail=jsonObject.getString(“电子邮件”);
String fbgender=jsonObject.getString(“性别”);
String fbName=jsonObject.getString(“名称”);
String fbLocation=jsonObject.getString(“位置”);
String fbid=jsonObject.getString(“id”);
profilePictureView.setPresetSize(profilePictureView.NORMAL);
profilePictureView.setProfileId(jsonObject.getString(“id”);
字符串propic=”https://graph.facebook.com/“+fbid+”/picture?type=large”;
session.setFbLogin(fbid、fbName、propic、fbLocation、fbgender、fbemail);
}捕获(JSONException e){
e、 printStackTrace();
}
}
在Session.java中

 public class Session {
        private SharedPreferences sp;
        private SharedPreferences.Editor spEditor;


        public static final String KEY_FBUID ="Fbid";
        public static final String KEY_FBNAME ="Fbname";
        public static final String KEY_FBEMAIL="Fbemail";
        public static final String KEY_FBGEND ="Fbgend";
        public static final String KEY_FBPROPIC ="Fbpropic";
        public static final String KEY_FBLOCAT ="Fblocation";

        public Session(Context context) {
            sp = PreferenceManager.getDefaultSharedPreferences(context);

        }



       public boolean setFblogin(boolean status){
            spEditor= sp.edit();
            spEditor.putBoolean("fb_logged_in",status);
            spEditor.commit();
            return true;
        }

        public void setFbLogin(String fid, String fname, String fpropic, String fulocation, String fbgend,String fbemail){

            spEditor.putString("Fbid",fid);
            spEditor.putString("Fbname",fname);
            spEditor.putString("Fbpropic",fpropic);
            spEditor.putString("Fblocation",fulocation);
            spEditor.putString("Fbgend",fbgend);
            spEditor.putString("Fbemail",fbemail);
            spEditor.commit();
        }


        public HashMap<String, String> getfbUserDetails(){
            HashMap<String, String> user = new HashMap<String, String>();
            // user name
            user.put(KEY_FBUID, sp.getString(KEY_FBUID, null));
            user.put(KEY_FBNAME, sp.getString(KEY_FBNAME, null));
            user.put(KEY_FBEMAIL, sp.getString(KEY_FBEMAIL, null));
            user.put(KEY_FBLOCAT, sp.getString(KEY_FBLOCAT, null));
            user.put(KEY_FBPROPIC, sp.getString(KEY_FBPROPIC, null));
            return user;
        }
公开课{
私人共享参考sp;
私有SharedReferences.Editor spEditor;
公共静态最终字符串键\u FBUID=“Fbid”;
公共静态最终字符串键\u FBNAME=“FBNAME”;
公共静态最终字符串键\u fbeail=“fbeail”;
公共静态最终字符串键\u FBGEND=“FBGEND”;
公共静态最终字符串键\u FBPROPIC=“FBPROPIC”;
公共静态最终字符串键\u FBLOCAT=“Fblocation”;
公开会议(上下文){
sp=PreferenceManager.getDefaultSharedReferences(上下文);
}
公共布尔setFblogin(布尔状态){
spEditor=sp.edit();
spEditor.putBoolean(“fb\u已登录”,状态);
提交();
返回true;
}
public void setFbLogin(字符串fid、字符串fname、字符串fPrictic、字符串fulocation、字符串fbgend、字符串fbemail){
spEditor.putString(“Fbid”,fid);
putString(“Fbname”,fname);
spEditor.putString(“Fbpropic”,fpropic);
spEditor.putString(“Fblocation”,fulocation);
putString(“Fbgend”,Fbgend);
spEditor.putString(“Fbemail”,Fbemail);
提交();
}
公共HashMap getfbUserDetails(){
HashMap用户=新建HashMap();
//用户名
put(KEY_FBUID,sp.getString(KEY_FBUID,null));
put(KEY_FBNAME,sp.getString(KEY_FBNAME,null));
user.put(KEY_fbeail,sp.getString(KEY_fbeail,null));
put(KEY_FBLOCAT,sp.getString(KEY_FBLOCAT,null));
put(KEY_FBPROPIC,sp.getString(KEY_FBPROPIC,null));
返回用户;
}
在我的主要活动中,我想使用
getfbuserDetails()
并获取会话存储的值。但是HashMap不起作用

如果有任何疑问,请发表评论。

2方法

1.保存数据Json格式字符串不转换对象。在将Json转换为对象(使用Gson)后,在获取Json(字符串)之前获取数据时


2.此处

共享首选项构造函数在哪里使用?您可以将图形数据存储到json对象中,然后将其存储在共享首选项
中,但HashMap不起作用。
是否显示任何错误?不起作用是什么意思?将
MainActivity
的代码也张贴在您获取值的工作位置2个值,但如果我试图获得更多值,那么2个值不起作用