Android保存共享首选项并获取用户facebook登录sdk 4的电子邮件
我正在构建一个应用程序,用户首先通过facebook登录,然后进入另一个地图活动。每当我重新启动应用程序时,它会显示“注销”按钮“不登录”,或者只是进入另一个活动,另外我还想保存我客户的电子邮件。这是我的密码-Android保存共享首选项并获取用户facebook登录sdk 4的电子邮件,android,facebook,android-studio,facebook-sdk-4.0,Android,Facebook,Android Studio,Facebook Sdk 4.0,我正在构建一个应用程序,用户首先通过facebook登录,然后进入另一个地图活动。每当我重新启动应用程序时,它会显示“注销”按钮“不登录”,或者只是进入另一个活动,另外我还想保存我客户的电子邮件。这是我的密码- public class MainActivity extends AppCompatActivity { private TextView info; private LoginButton loginButton; private CallbackManager callb
public class MainActivity extends AppCompatActivity {
private TextView info;
private LoginButton loginButton;
private CallbackManager callbackManager;
SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_main);
sp = getPreferences(MODE_PRIVATE);
String access_token = sp.getString("access_token",null);
long expires = sp.getLong("access_expires",0);
if (access_token != null){
}
info = (TextView) findViewById(R.id.info);
loginButton = (LoginButton) findViewById(R.id.login_button);
List<String> permissionNeeds = Arrays.asList("email", "user_birthday", "public_profile");
loginButton.setReadPermissions(permissionNeeds);
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
String token = loginResult.getAccessToken().getToken();
Log.d("LOGIN_SUCCESS", "Success");
loginButton.setVisibility(View.INVISIBLE); //<- IMPORTANT
Intent intent = new Intent(MainActivity.this,MapsActivity.class);
startActivity(intent);
finish();//<- IMPORTANT
}
@Override
public void onCancel() {
info.setText("Login attempt Canceled");
}
@Override
public void onError(FacebookException error) {
info.setText("Login attempt failed");
}
});
AccessTokenTracker accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
// Set the access token using `q
// currentAccessToken when it's loaded or set.
}
};
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
public void imageView (View v) {
ImageView img = (ImageView) findViewById(R.id.loofreLogo);
if (img != null) {
img.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse("http://www.loofre.com"));
startActivity(intent);
}
});
}
}
public void InsOnclick(View args0) {
if (args0.getId()==R.id.Bins){
Intent intent = new Intent(this,instructionSlide.class);
this.startActivity(intent);
}
}
public void AboutUs (View args1){
if (args1.getId()==R.id.Babout){
Intent intent = new Intent(this,AboutUs.class);
this.startActivity(intent);
}
}
public类MainActivity扩展了AppCompatActivity{
私有文本视图信息;
私人登录按钮登录按钮;
私人CallbackManager CallbackManager;
共享参考sp;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getApplicationContext());
callbackManager=callbackManager.Factory.create();
setContentView(R.layout.activity_main);
sp=getPreferences(模式\私有);
String access\u token=sp.getString(“access\u token”,null);
long expires=sp.getLong(“访问到期”,0);
if(访问令牌!=null){
}
info=(TextView)findViewById(R.id.info);
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
List permissionNeeds=Arrays.asList(“电子邮件”、“用户生日”、“公共档案”);
setReadPermissions(permissionNeeds);
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
字符串标记=loginResult.getAccessToken().getToken();
Log.d(“登录成功”、“成功”);
loginButton.setVisibility(View.INVISIBLE);//要在共享首选项中保存数据,请执行以下操作:
SharedPreferences preferencesPut = getSharedPreferences("KEY", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("nameKEY", "name");
editor.putString("emailKEY", "email");
editor.putBoolean("done", true);
editor.commit();
这将保存您的姓名和电子邮件。字符串“KEY”是一个特定的键,用于指定您想要知道的共享首选项值。然后,要从共享首选项中提取数据,请执行以下操作:
SharedPreferences preferencesGet = getSharedPreferences("KEY", Context.MODE_PRIVATE);
String name = preferencesGet.getString("nameKEY", "default");
String email = preferencesGet.getString("emailKEY", "default");
您将获得字符串“name”和“email”中的名称和电子邮件。您将获得值“default”如果您无法在共享首选项中保存数据或无法获取数据。您是否尝试使用共享首选项保存数据?@BhaveshMisri先生,我不知道如何做…尝试了youtube和stackoverflow的一些教程,但无法理解…因此我需要创建另一个活动?对于登录,我仅此活动无法执行在“我的项目帮助”中输入此选项,是否可以获取姓名和电子邮件?如果是,请将其放在代码的第一部分,而不是“姓名”和“电子邮件”输入您的姓名和电子邮件。@Bhaesh Misri按照这个答案回答-这会成功吗?@KuldeepRaj所以您无法从facebook获取用户数据?如果您想获取数据,那么该链接将对您有效。获取数据后,使用共享首选项保存数据。