FacebookSdk方法已被弃用,会抛出RuntimeException异常。

4

我有一个 FacebookSdk.sdkInitialize(getApplicationContext()) 这个方法,其中的 sdkInitialize() 已经显示为过时。根据这篇文章,我们可以删除这行代码。但是,如果在 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个回答

9
现在不需要使用AppEventsLogger.activateApp(this);,如果您已经在manifest.xml中设置了facebook_id,则不需要它。只需在manifest.xml中的Application标签中添加以下内容即可。
 <meta-data
   android:name="com.facebook.sdk.ApplicationId"          
   android:value="@string/facebook_app_id" /> 

其中的facebook_app_id在string.xml中定义。


修复得很好。 - Someone Somewhere
嘿,你怎么知道它不再需要了?你有文档吗? - j2emanue
@j2emanue 这里是“Legacy SDK Initialization”的文档 https://developers.facebook.com/docs/app-events/getting-started-app-events-android#legacy - Mihir Trivedi

3
那是因为您升级了 Facebook SDK 并且尝试使用提供 this 作为 ContextAppEventsLogger 实现: AppEventsLogger.activateApp(this);
该操作已被SDK4.19及以上版本替换为: AppEventsLogger.activateApp(getApplication());
关于此的文档表示:

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

如果 Facebook SDK 现在在应用程序启动时自动初始化,则有逻辑性。
请尝试这样做,希望这能解决您的问题。

1
我已经添加了 AppEventsLogger.activateApp(getApplication());,但是在一些用户的设备上仍然会崩溃,不知道该如何解决,这个崩溃只发生在某些用户身上。 - Om Infowave Developers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接