我正在阅读 facebook Android API 3.0 文档,我不明白会话与后台活动有什么关系。在所有示例中,我都应该扩展“FacebookFragment”。好吧,如果我的整个应用程序不扩展“SherlockFragment”,那就太好了,所以我不认为扩展 FacebookFragment 作为一个选项。
如果我使用 SessionLoginExample 中的代码,并将我的 AppID 放入与 facebook 相同的字符串中的字符串中,我会得到:
Error
10-22 17:04:26.464: E/AndroidRuntime(5491): FATAL EXCEPTION: main
10-22 17:04:26.464: E/AndroidRuntime(5491): java.lang.RuntimeException: Unable to start activity ComponentInfo{nl.specsavers.moodspecs/nl.specsavers.moodspecs.LauncherActivity}: java.lang.NullPointerException: Argument applicationId cannot be null
我正在尝试设置初始检查应用程序是否安装以及会话是否存在。
Settings.addLoggingBehavior(LoggingBehaviors.INCLUDE_ACCESS_TOKENS);
Session session = Session.getActiveSession();
if (session == null) {
if (savedInstanceState != null) {
session = Session.restoreSession(this, null, statusCallback, savedInstanceState);
}
if (session == null) {
session = new Session(this);
}
Session.setActiveSession(session);
if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
}
}
我需要能够以某种方式将我的应用程序 ID 放置在实际上没问题的地方,但我找不到放置它的位置。
我需要知道在使用 Sherlock Fragment 时是否可以避免扩展 Facebook Fragment。
Tnx.
FacebookFragment 不是公开的,也不适合由应用程序使用。
不过,这些示例主要使用 FacebookActivity,是的,您确实使用了 FacebookActivitynot需要扩展FacebookActivity。正如您所提到的,SessionLoginSample 演示了这一点,如果您不使用 FacebookActivity,您应该处理会话序列化并覆盖/转发 onActivityResult,如下所示。
也就是说,听起来您遇到的主要问题是设置 applicationId。您可以在代码或元数据中设置 applicationId。
In code:
要在代码中设置它,请定义一个包含您的应用程序 ID 的字符串常量 MY_APP_ID 并替换以下行:
session = new Session(this);
with:
session = new Session.Builder(this).setApplicationId(MY_APP_ID).build();
在元数据中:
要在元数据中设置它,请将以下内容添加到 AndroidManifest.xml 中的应用程序标记内但在任何活动标记之外:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
然后,在values/strings.xml中,为具有您的应用程序ID的app_id添加一个值:
<string name="app_id">1234567890</string>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)