![](/img/trans.png)
[英]Session is becoming null in OnActivityResult Method after login to Facebook in Android
[英]Facebook Session null on OnActivityResult
當我更改密碼並嘗試登錄該應用程序時,使用適用於Android的Facebook sdk 3.14,將打開Facebook本機應用程序,並要求我輸入新密碼。 問題是,如果我將我的應用程序置於后台,然后再次恢復我的應用程序並輸入新密碼並按登錄,則該應用程序將崩潰,因為我的會話在OnActivityResult上為空。 有人可以建議如何避免會話獲取null或如何處理它。
// This method gets the user logged in without any permission(basic
// permissions which are default will be asked).
@Override
public void login() {
session = Session.getActiveSession();
if (session == null
|| session.getState() == SessionState.CLOSED_LOGIN_FAILED
|| session.getState() == SessionState.CLOSED) {
session = new Session(context);
}
if (!session.isOpened()) {
session.openForRead(new Session.OpenRequest(this));
}
Session.setActiveSession(session);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
session = Session.getActiveSession();
session.onActivityResult(this.activity, requestCode, resultCode,
data);
if (resultCode == Activity.RESULT_OK && session.isOpened()) {
loginResult(true);
}
// If the user cancels the login process or it gets cancelled due to
// some another reason.
if (resultCode == Activity.RESULT_CANCELED) {
Log.e("LOGIN", "CANCELLED");
inter.loginResult(false);
}
}
// Facebook Login Result
@Override
public void loginResult(boolean result) {
// TODO Auto-generated method stub
if (result) {
Log.e("Facebook Login ", "Successful");
} else {
Log.e("Facebook Logout", "Un Successful");
}
}
它顯示的異常是:
java.lang.RuntimeException: Unable to resume activity {com.example.FirstDemo/com.example.FirstDemo.FC_LoginActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=199188, result=-1, data=Intent { (has extras) }} to activity {com.example.FirstDemo/com.example.FirstDemo.FC_LoginActivity}: java.lang.NullPointerException
嘗試如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
session = Session.getActiveSession();
if(session !=null)
{
session .onActivityResult(this.activity, requestCode, resultCode,
data);
if(session.isOpened())
{
loginResult(true);
}
else
{
loginResult(false);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.