¿Abrir la página de Facebook desde la aplicación de Android?

Resuelto Björn Marschollek asked hace 54 años • 31 respuestas

Desde mi aplicación de 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 iPhone, existe el fb://esquema de URL, pero intentar lo mismo en mi dispositivo Android arroja un error.ActivityNotFoundException .

¿Existe la posibilidad de abrir un perfil de Facebook en la aplicación oficial de Facebook desde el código?

Björn Marschollek avatar Jan 01 '70 08:01 Björn Marschollek
Aceptado

Esto funciona en la última versión:

  1. Vaya a https://graph.facebook.com/<user_name_here > ( https://graph.facebook.com/fsintents por ejemplo)
  2. Copia tu identificación
  3. Utilice 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.

EDITAR: desde la versión 11.0.0.11.23 (3002850), la aplicación de Facebook ya no admite esta forma, hay otra manera, consulte la respuesta a continuación de Jared Rummler.

joaomgcd avatar Apr 18 '2012 15:04 joaomgcd

En Facebook versión 11.0.0.11.23 (3002850) fb://profile/y fb://page/ya no funciona. Descompilé la aplicación de Facebook y descubrí que puedes usar fb://facewebmodal/f?href=[YOUR_FACEBOOK_PAGE]. Este es el método que he estado usando en producción:

/**
 * <p>Intent to open the official Facebook app. If the Facebook app is not installed then the
 * default web browser will be used.</p>
 *
 * <p>Example usage:</p>
 *
 * {@code newFacebookIntent(ctx.getPackageManager(), "https://www.facebook.com/JRummyApps");}
 *
 * @param pm
 *     The {@link PackageManager}. You can find this class through {@link
 *     Context#getPackageManager()}.
 * @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 = Uri.parse(url);
  try {
    ApplicationInfo applicationInfo = pm.getApplicationInfo("com.facebook.katana", 0);
    if (applicationInfo.enabled) {
      // http://stackoverflow.com/a/24547437/1048340
      uri = Uri.parse("fb://facewebmodal/f?href=" + url);
    }
  } catch (PackageManager.NameNotFoundException ignored) {
  }
  return new Intent(Intent.ACTION_VIEW, uri);
}
Jared Rummler avatar Jul 03 '2014 07:07 Jared Rummler

¿No es esto más fácil? ¿Por ejemplo dentro de un onClickListener?

try {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/426253597411506"));
    startActivity(intent);
} catch(Exception e) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com/appetizerandroid")));
}

PD. Obtenga su identificación (el número grande) de http://graph.facebook.com/[userName]

John avatar Jun 24 '2013 23:06 John