запустить приложение facebook из другого приложения - PullRequest
23 голосов
/ 16 ноября 2010

Как я могу запустить приложение facebook из своего приложения в Android?

Ответы [ 5 ]

66 голосов
/ 10 июля 2011

Глядя на последнюю версию Facebook apk (1.6), похоже, что и "facebook: //", и "fb: //" являются зарегистрированными протоколами.

facebook: //

facebook:/chat
facebook:/events
facebook:/friends
facebook:/inbox
facebook:/info
facebook:/newsfeed
facebook:/places
facebook:/requests
facebook:/wall

fb: //

fb://root
fb://feed
fb://feed/{userID}
fb://profile
fb://profile/{userID}
fb://page/{id}
fb://group/{id}
fb://place/fw?pid={id}
fb://profile/{#user_id}/wall
fb://profile/{#user_id}/info
fb://profile/{#user_id}/photos
fb://profile/{#user_id}/mutualfriends
fb://profile/{#user_id}/friends
fb://profile/{#user_id}/fans
fb://search
fb://friends
fb://pages
fb://messaging
fb://messaging/{#user_id}
fb://online
fb://requests
fb://events
fb://places
fb://birthdays
fb://notes
fb://places
fb://groups
fb://notifications
fb://albums
fb://album/{%s}?owner={#%s}
fb://video/?href={href}
fb://post/{postid}?owner={uid}¹

Извините, если я пропустил некоторые ... играл только с несколькими из них в эмуляторе, чтобы посмотреть, действительно ли они работают - куча из них вызовет приложение Facebookсбой.

¹ , где postid имеет формат uid_postid, например, 11204705797_10100412949637447

46 голосов
/ 16 ноября 2010

Чтобы просто запустить задание по умолчанию для запуска:

Intent intent = new Intent("android.intent.category.LAUNCHER");
intent.setClassName("com.facebook.katana", "com.facebook.katana.LoginActivity");
startActivity(intent);

Я провел небольшое исследование, потому что хотел это выяснить :).Я нашел несколько способов, как легко начать разные занятия.Но я не могу гарантировать, что это будет работать после обновления Facebook.Я проверил это с моим текущим приложением Facebook, и оно работает.По крайней мере, я протестировал его с помощью «adb shell», используя «am start .....».

Basic is:

String uri = "facebook://facebook.com/inbox";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);

часть facebook.com не проверена.Вы можете даже напечатать: «facebook: //gugus.com/inbox» с тем же эффектом.

Как это сделать в adb.

1. Start adb shell through console: "adb shell"
2. run: "am start -a android.intent.action.VIEW -d facebook://facebook.com/inbox"

, это запустит действие папки «Входящие».Вот некоторые урисы с примерами.Я думаю, что они говорят сами за себя, что они делают.

facebook://facebook.com/inbox
facebook://facebook.com/info?user=544410940     (id of the user. "patrick.boos" won't work)
facebook://facebook.com/wall
facebook://facebook.com/wall?user=544410940   (will only show the info if you have added it as friend. otherwise redirects to another activity)
facebook://facebook.com/notifications
facebook://facebook.com/photos
facebook://facebook.com/album
facebook://facebook.com/photo
facebook://facebook.com/newsfeed

могут быть параметры additianl, которые вы можете указать для некоторых из этих Uris, но у меня нет времени, чтобы просмотреть весь код этих действий.

Как я это сделал?проверить apktool.

9 голосов
/ 15 апреля 2013

Если кто-то хочет напрямую открыть фотографию

public Intent getOpenFacebookIntent(String pId) {
    try {
        activity.getPackageManager().getPackageInfo("com.facebook.katana", 0);
        return new Intent(Intent.ACTION_VIEW, Uri.parse("facebook:/photos?album=0&photo=" + pId + "&user=" + ownerId));
    } catch (Exception e) {
        return new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/"));
    }
}

startActivity(getOpenFacebookIntent(pid));

, где ownerId - это Facebook id пользователя, который загрузил эту фотографию, а pid - PhotoId

Наслаждайтесь:))

1 голос
/ 16 ноября 2010

Запуск другого приложения из вашего приложения в Android можно выполнить только в том случае, если запускаемое вами действие Intent соответствует фильтру намерений другого приложения, которое вы хотите запустить.

Как продемонстрировал @patrick, загрузите facebook.apk по адресуэмулятор и попробуйте запустить его с помощью команды оболочки adb.Работает нормально ..

Пропустить фильтр намерений и данные как Uri

0 голосов
/ 04 декабря 2018
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/groups/14531755***6215/")));

Это непосредственно открывает группу facebook с идентификатором: 14531755 ***6215* 1003 * внутри приложения fb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...