Интеграция Facebook и LinkedIn в Android-приложение

У меня есть приложение, которое объединяет сети Facebook и LinkdedIn. Согласно инструкции, чтобы интегрировать 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>

Пример также можно найти здесь. Как видно из ссылки, нам нужно добавить также строку " android:launchMode="singleInstance" ", иначе после входа в LinkedIn будет запущен новый экземпляр активности.

Однако при попытке войти в Facebook из того же действия эта фактическая строка приводит к следующей ошибке из действия входа в Facebook (!):

E/AndroidRuntime(7100): причина: com.facebook.FacebookException: невозможно вызвать LoginActivity с нулевым вызывающим пакетом. Это может произойти, если launchMode вызывающего объекта — singleInstance.

Итак, теперь я почему-то застрял, потому что удаление android:launchMode="singleInstance" заставит работать вход в Facebook, но приведет к тому, что вход в LinkedIn запустит другой экземпляр моей активности, но если я добавлю его , то вход через Facebook не работает!

Кто-нибудь знает, как решить эту проблему?

Спасибо,

Димитрис


person Dimitris    schedule 11.03.2013    source источник


Ответы (2)


Почитав немного документации, кажется, что замена singleInstance на singleTask помогла. Хотя я точно не понял, почему, я публикую это для других, чтобы они могли это увидеть, если кому-то это нужно. Я попытаюсь копнуть дальше и понять, почему, но в то же время, если кто-нибудь может объяснить, почему это работает, было бы неплохо.

person Dimitris    schedule 12.03.2013
comment
Кажется, это довольно просто: Из документов - singleInstance: то же, что и singleTask, за исключением того, что система не запускает никаких других действий в задаче, содержащей экземпляр. com.facebook.LoginActivity, похоже, является одним из тех действий, которые singleInstance запрещает :) Подробнее: developer.android.com/guide/topics/manifest/ - person Vaiden; 06.05.2013
comment
Приведенный выше ответ также работает для противоречивых требований интеграции Facebook и Twitter: singleTask сделал свое дело. - person alice_silver_man; 23.01.2014

Этот пакет SDK может интегрировать вас для работы как с facebook, так и с linkedin без каких-либо хлопот. Также используйте действительный URL-адрес для обратного вызова linkedin.

person user1722283    schedule 12.03.2013
comment
Спасибо за информацию пользователю 1722283. Я знаю о библиотеке socialauth-android, на самом деле я успешно использовал ее в прошлом. Но я все еще пытался понять, почему это происходит. - person Dimitris; 13.03.2013
comment
Существует разница между singleinstance и singletask. Singleinstance будет использовать только один экземпляр в стеке Android, тогда как singletask гарантирует, что несколько экземпляров не должны создаваться. поэтому результат, который вы получаете в настоящее время, является правильным. используйте однозадачность, и она должна решить вашу проблему. Кроме того, если вы чувствуете, что это решает вашу проблему, примите ответ, это повысит вашу репутацию в stackoverflow, и вы получите больше помощи. - person user1722283; 14.03.2013