4

如何启动在手机上打开 Facebook 应用程序并导航到 Facebook 中首选页面的意图?

我试过:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("com.facebook.katana", "com.facebook.katana.ProfileTabHostActivity");
intent.putExtra("extra_user_id", "123456789l");
this.startActivity(intent);

好吧,无论我写什么“1234567891”,它总是导航到我的页面。总是对我而不是其他人。

我怎么能这样做?

4

4 回答 4

11

这是最好和最简单的方法。只需按照代码

public final void Facebook() {
        final String urlFb = "fb://page/"+yourpageid;
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(urlFb));

        // If Facebook application is installed, use that else launch a browser
        final PackageManager packageManager = getPackageManager();
        List<ResolveInfo> list =
            packageManager.queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
        if (list.size() == 0) {
            final String urlBrowser = "https://www.facebook.com/pages/"+pageid;
            intent.setData(Uri.parse(urlBrowser));
        }

        startActivity(intent);
    }
于 2013-06-25T13:38:21.607 回答
4

我遇到了完全相同的问题,发送了用户 ID,但由于某种原因,我的个人资料总是打开而不是朋友的个人资料。

问题是,如果您传递代表 Facebook UIDStringLong对象,甚至是long原始类型,意图稍后将无法读取它。你需要通过一个真实的Long.

所以完整的代码是:

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setClassName("com.facebook.katana", "com.facebook.katana.ProfileTabHostActivity");
    Long uid = new Long("123456789");
    intent.putExtra("extra_user_id", uid);
    startActivity(intent);

好的,享受并希望这会有所帮助:-)

格言

于 2012-04-28T16:59:07.867 回答
1

试试这个代码:

String facebookUrl = "https://www.facebook.com/<id_here>";
    try {
        int versionCode = getPackageManager().getPackageInfo("com.facebook.katana", 0).versionCode;
        if (versionCode >= 3002850) {
            Uri uri = Uri.parse("fb://facewebmodal/f?href=" + facebookUrl);
               startActivity(new Intent(Intent.ACTION_VIEW, uri));
        } else {
            Uri uri = Uri.parse("fb://page/<id_here>");
            startActivity(new Intent(Intent.ACTION_VIEW, uri));
        }
    } catch (PackageManager.NameNotFoundException e) {
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(facebookUrl)));
    }
于 2015-01-23T07:49:53.340 回答
0

此解决方案将不再起作用。新版本的 facebook 应用程序不再支持这些意图。请参阅此处的错误报告

新的解决方案是使用 iPhone 方案机制(是的,facebook 决定在 Android 中支持 iPhone 机制,而不是 Android 的隐式 Intent 机制)。

因此,要使用用户个人资料打开 facebook 应用程序,您需要做的就是:

String facebookScheme = "fb://profile/" + facebookId;
Intent facebookIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme)); 
startActivity(facebookIntent);

如果您正在寻找其他操作,您可以使用以下页面获取所有可用操作(/您必须对其进行测试,因为我没有找到关于此的 facebook 官方出版物)

于 2012-10-28T09:47:09.323 回答