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