不推荐使用的FacebookSdk方法抛出RuntimeException

时间:2017-06-14 12:30:00

标签: android facebook-android-sdk facebook-sdk-4.0 android-facebook

我有FacebookSdk.sdkInitialize(getApplicationContext()),其中sdkInitialize()显示为已弃用。根据这个article,我们可以删除该行。但是我在AppEventsLogger.activateApp(this)之后的行中出现以下错误:

AndroidRuntime: FATAL EXCEPTION: main                                                                              Process: com.daimler.moovel.android:auth, PID: 4011                                java.lang.RuntimeException: Unable to create application com.daimler.moovel.android.DebugApplication: The Facebook sdk must be initialized before calling activateApp                                              at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5879)                                             at android.app.ActivityThread.-wrap3(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: The Facebook sdk must be initialized before calling activateApp
at com.facebook.appevents.AppEventsLogger.activateApp(AppEventsLogger.java:226)
at com.facebook.appevents.AppEventsLogger.activateApp(AppEventsLogger.java:208)

那我错过了什么?

2 个答案:

答案 0 :(得分:9)

如果您在manifest.xml中设置了facebook_id,则不需要AppEventsLogger.activateApp(this);现在不需要 <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" /> 你只需要在manifest.xml

中的Application标签中添加以下内容
 $http({method: 'GET', url: '/config'}).then(function(res) {
      configProvider.setConfig(res.data.config);
 }

其中facebook_app_id在string.xml中定义

答案 1 :(得分:3)

这是因为您升级了Facebook SDK,并且您尝试将AppEventsLogger providinig this的实施用作Context

AppEventsLogger.activateApp(this);

并且从SDK 4.19及更高版本替换为:

AppEventsLogger.activateApp(getApplication());

有关此内容的文档说明:

  

通知事件系统应用程序已启动并激活和停用应自动开始记录的事件。这应该从您的应用程序的OnCreate方法调用。

如果Facebook SDK现在在应用程序启动时自动初始化,则具有逻辑。

尝试我希望这可以解决您的问题。