从android应用程序打开facebook页面?

从android应用程序打开facebook页面?,android,android-intent,facebook-android-sdk,Android,Android Intent,Facebook Android Sdk,我如何开始在手机上打开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.startActivit

我如何开始在手机上打开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”,它总是导航到我的页面。总是对我,而不是对其他人


我怎么能做到这一点呢?

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

问题是,如果您传递表示Facebook UID的
Long
对象的
字符串,或者甚至是
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);
好的,享受并希望这有帮助:-)


Maxim

此解决方案不再有效。新版本的facebook应用程序不再支持这种意图。请参阅错误报告

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

因此,要使用用户档案打开facebook应用程序,您需要做的就是:

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

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

以下是最好且简单的方法。 只需遵循代码即可

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);
    }
public final void Facebook(){
最后一个字符串urlFb=“fb://page/”+yourpageid;
意向意向=新意向(意向.行动\视图);
setData(Uri.parse(urlFb));
//如果安装了Facebook应用程序,请使用该应用程序启动浏览器
最终PackageManager PackageManager=getPackageManager();
列表=
packageManager.QueryInputActivities(意图,
PackageManager.MATCH_(仅限默认值);
if(list.size()==0){
最终字符串urlBrowser=”https://www.facebook.com/pages/“+pageid;
setData(Uri.parse(urlBrowser));
}
星触觉(意向);
}
尝试以下代码:

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)));
    }
String facebook url=”https://www.facebook.com/";
试一试{
int versionCode=getPackageManager().getPackageInfo(“com.facebook.katana”,0).versionCode;
如果(版本代码>=3002850){
Uri=Uri.parse(“fb://facewebmodal/f?href=“+facebookUrl”);
startActivity(新意图(Intent.ACTION_视图,uri));
}否则{
Uri=Uri.parse(“fb://page/”);
startActivity(新意图(Intent.ACTION_视图,uri));
}
}捕获(PackageManager.NameNotFounde异常){
startActivity(新的意图(Intent.ACTION_视图,Uri.parse(facebookUrl));
}

此解决方案不再有效。您可以在下面的链接中找到答案嘿,这不是一个好的解决方案,因为它显式使用ProfileTabHostActivity。在未来版本中,Facebook可能会决定重命名该活动或将其从应用程序中删除。然后你的解决方案就不起作用了。它起作用了,但在新的facebook更新中,页面的链接是“this代替”;