14

我开始使用facebook-android-sdk-3.5.2。

SDK 项目还包含使用 api 的各种示例示例,例如:

  • HelloFacebookSample:一个简单的活动,你可以登录并做一些事情,效果很好。

接下来我想尝试下一个示例:

  • GraphApiSample,我遇到了问题。

启动此应用程序后,出现此错误:(Logcat):

11-11 15:22:40.008: E/AndroidRuntime(14048): FATAL EXCEPTION: main
11-11 15:22:40.008: E/AndroidRuntime(14048): java.lang.RuntimeException: Unable to resume activity {com.facebook.samples.graphapi/com.facebook.samples.graphapi.GraphApiSampleActivity}: java.lang.IllegalArgumentException: Both context and applicationId must be non-null
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2621)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2649)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.access$700(ActivityThread.java:134)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.os.Looper.loop(Looper.java:137)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.main(ActivityThread.java:4867)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at java.lang.reflect.Method.invokeNative(Native Method)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at java.lang.reflect.Method.invoke(Method.java:511)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at dalvik.system.NativeStart.main(Native Method)
11-11 15:22:40.008: E/AndroidRuntime(14048): Caused by: java.lang.IllegalArgumentException: Both context and applicationId must be non-null
11-11 15:22:40.008: E/AndroidRuntime(14048):    at com.facebook.AppEventsLogger.activateApp(AppEventsLogger.java:308)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at com.facebook.AppEventsLogger.activateApp(AppEventsLogger.java:292)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at com.facebook.samples.graphapi.GraphApiSampleActivity.onResume(GraphApiSampleActivity.java:76)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.Activity.performResume(Activity.java:5121)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2611)

好吧,我明白了:

引起:java.lang.IllegalArgumentException:context 和 applicationId 都必须为非空

好的,但我没有更改代码中的任何内容。这应该是工作,对吧?

我尝试过了:

  • 删除项目,导入

  • 删除项目,并从现有代码中添加一个新的 android 项目

  • 清理我的项目

  • 删除 facebook sdk 库依赖并重新导入,然后再次清理。

在所有这些之后相同的结果。

请如果有人熟悉这个问题。帮我。

编辑:

出于某种原因,这个官方 facebook 示例不包含 appId。感谢您的建议!

4

2 回答 2

24

尝试设置app_idstrings.xml添加它。此处的入门教程中也提到了它:文档

附加步骤:使用AndroidManifest.xml 中的名称com.facebook.sdk.ApplicationId和值创建元数据@string/app_id

于 2013-11-12T07:03:17.710 回答
5

如果您没有(或不想要)存储在您的 strings.xml 中的 facebook 应用程序 ID(例如,您可能会通过互联网动态接收 facebook 应用程序 ID),那么您可以调用此方法来激活... AppEventsLogger.activateApp(Context context, String facebookAppId)

您应该在onResume()活动的方法中调用它:

@Override protected void onResume() { super.onResume(); AppEventsLogger.activateApp(...); }

于 2014-12-12T17:12:11.067 回答