Desde mi aplicación Android, me gustaría abrir un enlace a un perfil de Facebook en la aplicación oficial de Facebook (si la aplicación está instalada, por supuesto). Para el iPhone, existe el esquema de URL fb://
, pero al intentar lo mismo en mi dispositivo Android se produce una ActivityNotFoundException
.
¿Hay alguna posibilidad de abrir un perfil de Facebook en la aplicación oficial de Facebook desde el código?
Esto funciona en la última versión:
Vaya a https://graph.facebook.com/
Copie su identificación
Utiliza este método:
public static Intent getOpenFacebookIntent(Context context) {
try {
context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
return new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/<id_here>"));
} catch (Exception e) {
return new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/<user_name_here>"));
}
}
Esto abrirá la aplicación de Facebook si el usuario la tiene instalada. De lo contrario, abrirá Facebook en el navegador.
EDIT: desde la versión 11.0.0.11.23 (3002850) la aplicación de Facebook ya no admite esta forma, hay otra forma, consulta la respuesta de Jared Rummler.
este es el código más sencillo para hacer esto
public final void launchFacebook() {
final String urlFb = "fb://page/"+yourpageid;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(urlFb));
// If a Facebook app is installed, use it. Otherwise, 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);
}
Esto ha sido ingeniería inversa por Pierre87 en el foro FrAndroid, pero no puedo encontrar ningún sitio oficial que lo describa, así que hay que tratarlo como indocumentado y susceptible de dejar de funcionar en cualquier momento:
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);