17

我注意到 Facebook SDK 3.0 必须在 Manifest 文件中有 LoginActivity 声明。

<activity android:name="com.facebook.LoginActivity"
          android:label="@string/app_name" />
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId" />

如果不存在,则会引发以下异常。

com.facebook.FacebookException: Cannot use SessionLoginBehavior SSO_WITH_FALLBACK when com.facebook.LoginActivity is not declared as an activity in AndroidManifest.xml

当 Facebook SDK 必须依赖此声明时,这似乎是一种不好的做法。我想知道是否有办法从清单文件中删除它。

关于缺少applicationId,我可以通过修改一些函数,LoginButton构造函数和Session构造函数在代码中传递。

4

2 回答 2

6

使用官方构建堆栈时,您需要引用清单中的每个 Activity(需要启动)。这确实是违反直觉的,因为人们会期望从包含的库中继承这些东西。

现在可以使用Maven构建堆栈和新的构建系统来实现一个称为“清单合并”的过程。由于新的构建系统仍在进行中,您只需要等到它正式推出即可。

于 2013-05-09T09:04:44.927 回答
2

正如错误所暗示的那样,将声明如下放在您的清单中:

<activity android:name="com.facebook.LoginActivity"
          android:theme="@android:style/Theme.Translucent.NoTitleBar"
          android:label="@string/app_name" />
于 2014-08-19T16:55:12.773 回答