0
所以這裏的Android的Facebook解析登錄邏輯是代碼叫了兩聲
public void redirectToMain(){
Intent intent = new Intent(getApplicationContext(), MainScreen.class);
startActivity(intent);
finish();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pers.clear();
pers.add("user_friends");
pers.add("email");
if (ParseUser.getCurrentUser() != null) {
redirectToMain();
}
loginButton = (LoginButton) findViewById(R.id.login_button);
callbackManager = CallbackManager.Factory.create();
loginButton.setReadPermissions("email", "user_friends");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
parseLogin();
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
}
public void parseLogin(){
loginButton.setVisibility(View.INVISIBLE);
ParseFacebookUtils.logInWithReadPermissionsInBackground(this, pers, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException e) {
if(user==null){
Log.i("Cancel", "facebook");
}else if(user.isNew()){
Log.i("Parse", "succcess");
redirectToMain();
}
else{
Log.i("Parse", "old");
redirectToMain();
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
ParseFacebookUtils.onActivityResult(requestCode,resultCode,data);
}
}
,一切工作正常,用戶被重定向到第二個活動,但活動被調用兩次。另外,舊的日誌部分也在logcat中寫入兩次,所以我的假設是parseLogin()或ParseFacebookUtils.log ...()被調用兩次。任何想法爲什麼會發生?
嘗試刪除'ParseFacebookUtils.onActivityResult(requestCode,resultCode,data);'... – rafsanahmad007
是的,它的工作原理。謝謝! – ubuntuaskdanidani
我已將其添加爲答案........ – rafsanahmad007