2013-03-11 54 views
3

我有一个集成了Facebook和LinkdedIn网络的应用程序。根据指示,为了整合LinkedIn,我需要添加在我的清单下面的代码,我的活动范围内:在Android应用中集成Facebook和LinkedIn

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:scheme="x-oauthflow-linkedin" android:host="callback" /> 
</intent-filter> 

一个例子也可以找到here。正如您在链接中看到的那样,我们还需要添加“android:launchMode =”singleInstance“”行,否则在使用LinkedIn登录后会开始一个新的活动实例。

然而,试图从同一个活动登录到Facebook时,该实际线路的结果与Facebook的登录活动以下错误(!):

E/AndroidRuntime(7100):产生的原因: com.facebook.FacebookException:无法使用空调用包调用LoginActivity。如果调用者的launchMode是singleInstance,则会发生这种情况。

所以现在,我莫名其妙地卡住,因为删除机器人:launchMode =“singleInstance”将使Facebook登录工作,但会造成LinkedIn登录,开始我的活动的另一个实例,但如果我添加它,那么Facebook登录不起作用!

有没有人有任何想法如何解决这个问题?

谢谢

季米特里斯

回答

5

在阅读了一些文档之后,似乎用singleTask替换singleInstance的确有窍门。虽然,我还没有弄清楚为什么,我张贴这个给别人看,以防万一有人需要它。我会尽力进一步挖掘并理解为什么,但同时如果有人能解释为什么这是行得通的,那就太好了。

+0

似乎很简单: 从docs - singleInstance:“与”singleTask“相同,只是系统不会将任何其他活动发送到持有该实例的任务中。 com.facebook.LoginActivity似乎是其中一个“其他活动”singleInstance是禁止:) 更多:http://developer.android.com/guide/topics/manifest/activity-element.html#lmode – Vaiden 2013-05-05 22:37:37

+0

上面的答案也适用于整合Facebook和Twitter的冲突要求:singleTask做到了这一点。 – 2014-01-23 03:41:14

1

This SDK可以整合你没有任何麻烦同时处理Facebook和LinkedIn。还使用有效的url进行linkedin回调。

+0

感谢您的信息user1722283。我知道socialauth-android库,实际上我过去成功地使用过它。但我仍然试图理解为什么会发生这种情况。 – Dimitris 2013-03-12 20:55:53

+0

singleinstance和singletask之间有区别。 Singleinstance将在android堆栈中仅使用一个实例,而singletask将确保不应创建多个实例。所以你现在正在做出的结果是正确的。使用singletask,它应该解决你的问题。此外,如果您觉得它解决了您的问题,请接受答案,它会提高您在stackoverflow上的声望,并且您将获得更多帮助。 – user1722283 2013-03-14 05:01:54