从 android 应用程序打开 facebook 页面(在 facebook 版本中 > v11)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24526882/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Open facebook page from android app (in facebook version > v11)
提问by sam
I used to open my facebook page from my app using the below code, but this does not work anymore starting facebook v11.0.0.11.23 released on June 21, 2014, any idea how to open the page in the new facebook app? To note that it opens now the facebook app but without opening the specified page, it used to work just fine before the latest update
我曾经使用以下代码从我的应用程序中打开我的 facebook 页面,但是从 2014 年 6 月 21 日发布的 facebook v11.0.0.11.23 开始,这不再起作用,知道如何在新的 facebook 应用程序中打开页面吗?请注意,它现在打开了 facebook 应用程序,但没有打开指定的页面,它在最新更新之前可以正常工作
public void openFacebookPage() {
Intent intent = null;
try {
context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/<id here>"));
//tried this also
//intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/<id here>"));
} catch (Exception e) {
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/<name here>"));
}
context.startActivity(intent);
}
回答by Jared Rummler
In Facebook version 11.0.0.11.23 (3002850) fb://profile/ and fb://page/ are no longer supported. I decompiled the Facebook app and was able to come up with the following solution:
在 Facebook 版本 11.0.0.11.23 (3002850) 中,不再支持 fb://profile/ 和 fb://page/。我反编译了 Facebook 应用程序,并提出了以下解决方案:
String facebookUrl = "https://www.facebook.com/JRummyApps";
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 {
// open the Facebook app using the old method (fb://profile/id or fb://page/id)
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/336227679757310")));
}
} catch (PackageManager.NameNotFoundException e) {
// Facebook is not installed. Open the browser
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(facebookUrl)));
}
Edit:It has been some time and it looks like fb://profile and fb://page are no longer supported. Below is the method I have been using in production:
编辑:已经有一段时间了,看起来 fb://profile 和 fb://page 不再受支持。以下是我在生产中使用的方法:
/**
* Intent to open the official Facebook app. If the Facebook app is not installed then the
* default web browser will be used.</p>
*
* Example usage:</p>
* <code>newFacebookIntent(context.getPackageManager(), "https://www.facebook.com/JRummyApps");</code></p>
*
* @param pm
* Instance of the {@link PackageManager}.
* @param url
* The full URL to the Facebook page or profile.
* @return An intent that will open the Facebook page/profile.
*/
public static Intent newFacebookIntent(PackageManager pm, String url) {
Uri uri;
try {
pm.getPackageInfo("com.facebook.katana", 0);
// http://stackoverflow.com/a/24547437/1048340
uri = Uri.parse("fb://facewebmodal/f?href=" + url);
} catch (PackageManager.NameNotFoundException e) {
uri = Uri.parse(url);
}
return new Intent(Intent.ACTION_VIEW, uri);
}