我可以成功连接到Facebook并获得朋友列表。所有连接都正常。但是当我删除Facebook的数据(通过设置->应用程序)和我的应用程序时,会出现登录问题。[SDK 3.5]
- 启动我的应用
- 建立脸书连接
- Facebook要求提供用户名和密码,输入它们
- 稍等片刻
- 它显示"权限"屏幕,询问基本用户信息并发生错误:"您的应用程序意外停止工作。请重试(强制关闭)"
当我单击强制关闭时,突然一次又一次地发生相同的错误(而权限屏幕仍在后面)。如果我能足够快,我点击强制关闭,然后点击允许权限,一切正常,我可以看到我的朋友。所以这个强制关闭错误意味着什么都没有?在日志中,有 3-4 条相同的致命异常消息,因为每次我单击强制关闭时,错误都会再次发生。当我在手机上尝试应用程序时会发生此错误(SE Xperia Arc S,2.3.3)。但是当我尝试使用模拟器时,不会发生错误。它可以毫无问题地工作。(模拟器为 2.3.3 和 4.2)
09-04 18:09:47.916 E/AndroidRuntime(29511): FATAL EXCEPTION: main
09-04 18:09:47.916 E/AndroidRuntime(29511): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:47.916 E/AndroidRuntime(29511): Caused by: java.lang.NullPointerException
09-04 18:09:47.916 E/AndroidRuntime(29511): ... 12 more
09-04 18:09:51.526 E/AndroidRuntime(29538): FATAL EXCEPTION: main
09-04 18:09:51.526 E/AndroidRuntime(29538): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:51.526 E/AndroidRuntime(29538): Caused by: java.lang.NullPointerException
09-04 18:09:51.526 E/AndroidRuntime(29538): ... 12 more
09-04 18:09:53.786 E/AndroidRuntime(29547): FATAL EXCEPTION: main
09-04 18:09:53.786 E/AndroidRuntime(29547): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:53.786 E/AndroidRuntime(29547): Caused by: java.lang.NullPointerException
09-04 18:09:53.786 E/AndroidRuntime(29547): ... 12 more
09-04 18:09:55.516 E/AndroidRuntime(29557): FATAL EXCEPTION: main
09-04 18:09:55.516 E/AndroidRuntime(29557): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:55.516 E/AndroidRuntime(29557): Caused by: java.lang.NullPointerException
09-04 18:09:55.516 E/AndroidRuntime(29557): ... 12 more
09-04 18:09:57.776 E/AndroidRuntime(29564): FATAL EXCEPTION: main
09-04 18:09:57.776 E/AndroidRuntime(29564): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:57.776 E/AndroidRuntime(29564): Caused by: java.lang.NullPointerException
09-04 18:09:57.776 E/AndroidRuntime(29564): ... 12 more
09-04 18:09:59.186 E/dalvikvm(29571): Could not find class 'dalvik.system.BaseDexClassLoader', referenced from method com.facebook.common.dextricks.SystemClassLoaderAdder.a
09-04 18:09:59.586 E/dalvik-internals(29571): Failed to look up ladDumpProfiles
09-04 18:09:59.586 E/dalvik-internals(29571): Failed to look up ladResetProfiles
09-04 18:09:59.586 E/dalvik-internals(29571): Failed to look up ladPrintHeaderInfo
09-04 18:09:59.936 E/AndroidRuntime(29578): FATAL EXCEPTION: main
09-04 18:09:59.936 E/AndroidRuntime(29578): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:59.936 E/AndroidRuntime(29578): Caused by: java.lang.NullPointerException
09-04 18:09:59.936 E/AndroidRuntime(29578): ... 12 more
09-04 18:10:02.006 E/AndroidRuntime(29585): FATAL EXCEPTION: main
09-04 18:10:02.006 E/AndroidRuntime(29585): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:10:02.006 E/AndroidRuntime(29585): Caused by: java.lang.NullPointerException
09-04 18:10:02.006 E/AndroidRuntime(29585): ... 12 more
09-04 18:10:04.566 E/ONRESUME(29605): Onresume worked
09-04 18:10:04.636 E/STATEM (29605): OPENING
09-04 18:10:05.186 E/ONRESUME(29605): Onresume worked
第一次连接后,我可以毫无错误地找到我的朋友。它只发生在我第一次连接Facebook之后,它会询问我的用户名和密码(然后单击登录)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uiHelper = new UiLifecycleHelper(this, callback);
uiHelper.onCreate(savedInstanceState);
setContentView(R.layout.activity_fb_findfriends);
LinearLayout v = (LinearLayout) findViewById(R.id.fb_app_users);
openSession(v);
}
public void openSession(View v){
// start Facebook Login
Session.openActiveSession(this, true, callback);
}
@Override
protected void onResume() {
super.onResume();
uiHelper.onResume();
Log.e("ONRESUME", "Onresume çalıştı");
}
private void requestMyAppFacebookFriends(Session session) {
Request friendsRequest = createRequest(session);
friendsRequest.setCallback(new Request.Callback() {
@Override
public void onCompleted(Response response) {
List<GraphUser> friends = getResults(response);
//Display Friends
}
});
friendsRequest.executeAsync();
}
我也无法理解日志输出中的空是什么。
更新!我找到了发生错误的行。它位于com.facebook.AuthorizationClient.java第135行
void startOrContinueAuth(AuthorizationRequest request) {
if (appEventsLogger == null || appEventsLogger.getApplicationId() != request.getApplicationId()) {
Log.e("HATA!", "BOOM");
appEventsLogger = AppEventsLogger.newLogger(context, request.getApplicationId());
}
并且此startOrContinueAuth方法是在com中触发的。Facebook.LoginActivity
@Override
public void onResume() {
super.onResume();
// If the calling package is null, this generally means that the callee was started
// with a launchMode of singleInstance. Unfortunately, Android does not allow a result
// to be set when the callee is a singleInstance, so we log an error and return.
if (callingPackage == null) {
Log.e(TAG, "Aheyy"+NULL_CALLING_PKG_ERROR_MSG);
finish();
return;
}
authorizationClient.startOrContinueAuth(request);
}
if (getInProgress()) {
continueAuth();
} else {
authorize(request);
}
}
更新2!
- 我感到非常困惑。我将我的应用程序简化为最基本的openActiveSession() 方法。崩溃
- 我尝试了Facebook,FriendPicker的示例应用程序,它也崩溃并显示相同的日志错误输出。
- 在模拟器上尝试过,它可以工作,但是当我旋转屏幕时显示授权屏幕(取消-允许),发生相同的错误(无法到恢复等等等等...在Facebook的示例应用程序上出现相同的错误很奇怪
认为这是您的应用程序的问题。人们一直在报告此错误,我刚刚在这里回答了一个类似的问题。基本上,Facebook昨天发布了新版本的SDK,修复了其AuthorizationClient中的onResume NPE崩溃。查看升级是否能解决您的问题。
根据更改日志 https://developers.facebook.com/docs/android/change-log-3.x/,
在Facebook版本3.5.1中修复了许多有关身份验证和应用程序事件日志记录的问题,因此也许它已在可以从 https://github.com/facebook/facebook-android-sdk 下载的最新版本中得到解决。我希望它能解决你的问题:)
基本上,当调用活动未实时或已销毁时,会发生此问题。在 android 中,方法 onActivityResult() 在登录后被调用。活动被手机强行破坏(在开发人员选项设置中启用不保留活动选项)。请在开发人员选项设置中交叉检查"不保留活动"是否已启用或禁用。
确保在您的清单中 lgin 活动是纵向的。 如果活动不是纵向的,则存在丢失活动的问题。这是非常蹩脚的...:|