Facebook Android SDK登录时自动关闭当前Activity问题求助
解决Facebook Login Manager导致当前Activity自动关闭的问题
嘿,我之前也踩过类似的坑,咱们一步步来排查和解决:
确认接口实现与回调方法
首先得确保你的当前Activity已经正确实现了FacebookCallback<LoginResult>接口,并且重写了onSuccess、onCancel、onError这三个必须的方法。要是漏了实现或者重写,Facebook的回调机制可能会抛出异常,间接导致Activity被系统回收或者跳转异常。检查Manifest配置是否完整
Facebook登录需要在AndroidManifest.xml里添加特定配置,少一项都可能出问题:<!-- Facebook登录所需的Activity声明 --> <activity android:name="com.facebook.FacebookActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <!-- 绑定你的Facebook App ID --> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>同时要保证
strings.xml里的facebook_app_id和你在Facebook开发者后台创建的App ID完全一致,大小写和字符都不能错。处理Activity的生命周期回调
一定要在当前Activity的onActivityResult方法里调用callbackManager.onActivityResult(),而且要放在super.onActivityResult()之前,不然登录结果无法正确传递,可能导致流程中断:override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { callbackManager.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data) }确认当前Activity的状态
调用logInWithReadPermissions之前,检查一下当前Activity是否处于活跃状态,避免在Activity即将销毁或者已经finish的时候发起登录:if (!currentActivity.isFinishing && !currentActivity.isDestroyed) { loginManager.logInWithReadPermissions(currentActivity, arrayListOf("public_profile", "email", "user_friends")) }排查其他代码干扰
最后检查下你的代码里有没有其他地方意外调用了finish()方法,或者有广播接收器、生命周期回调(比如onPause、onStop)里的逻辑导致当前Activity被关闭。
内容的提问来源于stack exchange,提问作者Puneet Kala




