Как запустить приложение facebook из моего приложения в Android?
Запустить приложение facebook из другого приложения
Ответ 1
Чтобы просто запустить действие Launcher по умолчанию:
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.....".
Базовый:
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
могут быть дополнительные параметры, которые вы можете дать некоторым из этих uris, но у меня нет времени, чтобы пройти весь код этих действий.
Как я это сделал? проверьте apktool.
Ответ 2
Глядя на последнюю версию 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://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
Ответ 3
Если кто-то хочет напрямую открыть фотографию
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
Наслаждайтесь:))
Ответ 4
Запуск другого приложения из вашего приложения в android можно выполнить только в том случае, если действие Intent, которое вы запускаете, совпадает с фильтром намерений другого приложения, которое вы хотите запустить.
Как показал @patrick, загрузите facebook.apk в эмулятор и попробуйте запустить его через команду adb shell. Он отлично работает.
Пропустить фильтр Intent и данные как Uri
Ответ 5
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/groups/14531755***6215/")));
Это напрямую открывает группу facebook с идентификатором: 14531755 *** 6215 внутри приложения fb