从其他应用程序启动Facebook应用程序

我怎样才能从我的应用程序在Android中启动一个Facebook应用程序?

要启动默认的启动器活动,请执行以下操作:

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

我做了一些研究,因为我想找出这个:)。 我发现了一些如何轻松开始不同活动的方法。 但我不能保证这将在facebook升级后起作用。 我用我当前的Facebook应用程序testing它,它的工作原理。 至less我使用“am start …..”用“adb shell”来testing它。

基本是:

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

facebook.com部分没有被选中。 你甚至可以键入:“脸谱://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" 

这将启动收件箱活动。 这里有一些Uris的例子。 我认为他们自己说话。

 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添加additianl参数,但是我没有时间去完成这些活动的所有代码。

我是怎么做到的? 检查出apktool。

看最新的Facebook apk(1.6),它看起来像“脸谱://”和“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

如果有人想直接打开照片

 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 ,而pidPhotoId

请享用 :))

只有当您的Intent动作与您想要启动的其他应用程序的意图filter匹配时,才能在Android中从您的应用程序启动另一个应用程序。

正如@patrick演示的那样,将facebook.apk下载到模拟器,并尝试通过adb shell命令运行。 它工作正常..

通过意图filter和数据作为一个Uri