Abra la página de Facebook en la aplicación de Facebook (si está instalada) en Android

Me gustaría abrir mi página de Facebook desde mi aplicación de Android, si la aplicación de Facebook está disponible, de lo contrario: esta página debe estar abierta en el navegador predeterminado.

para esto probé el siguiente código:

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

El problema es: aquí tengo un dispositivo Android con la última versión de Facebook. Si quisiera abrir desde mi aplicación la página de Facebook, se abrirá la aplicación de Facebook, pero sin mi página.

Solo veo el mensaje:

Problemas para cargar la línea de tiempo.

¿Qué está mal?

"fb://page/ no funciona con las versiones más recientes de la aplicación FB. Debe usar fb://facewebmodal/f?href= para las versiones más recientes.

Este es un código de trabajo completo actualmente en vivo en una de mis aplicaciones:

 public static String FACEBOOK_URL = "https://www.facebook.com/YourPageName"; public static String FACEBOOK_PAGE_ID = "YourPageName"; //method to get the right URL to use in the intent public String getFacebookPageURL(Context context) { PackageManager packageManager = context.getPackageManager(); try { int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode; if (versionCode >= 3002850) { //newer versions of fb app return "fb://facewebmodal/f?href=" + FACEBOOK_URL; } else { //older versions of fb app return "fb://page/" + FACEBOOK_PAGE_ID; } } catch (PackageManager.NameNotFoundException e) { return FACEBOOK_URL; //normal web url } } 

Este método devolverá la URL correcta para la aplicación si está instalada o la URL web si la aplicación no está instalada.

Luego comience una intención de la siguiente manera:

 Intent facebookIntent = new Intent(Intent.ACTION_VIEW); String facebookUrl = getFacebookPageURL(this); facebookIntent.setData(Uri.parse(facebookUrl)); startActivity(facebookIntent); 

Eso es todo lo que necesitas.

Esto funciona en la última versión:

Vaya a https://graph.facebook.com/ ( https://graph.facebook.com/fsintents por ejemplo).

Copie su identificación Use 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/")); } catch (Exception e) { return new Intent(Intent.ACTION_VIEW,Uri.parse("https://www.facebook.com/")); } } 

De acuerdo, modifiqué el Código @AndroidMechanics, porque en los dispositivos se inhabilita Facebook ¡la aplicación falla!

aquí está el getFacebookUrl modificado:

 public String getFacebookPageURL(Context context) { PackageManager packageManager = context.getPackageManager(); try { int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode; boolean activated = packageManager.getApplicationInfo("com.facebook.katana", 0).enabled; if(activated){ if ((versionCode >= 3002850)) { return "fb://facewebmodal/f?href=" + FACEBOOK_URL; } else { return "fb://page/" + FACEBOOK_PAGE_ID; } }else{ return FACEBOOK_URL; } } catch (PackageManager.NameNotFoundException e) { return FACEBOOK_URL; } } 

¡Lo único que se agrega es ver si la aplicación está deshabilitada o no, si está deshabilitada, la aplicación llamará al navegador web!

Aquí hay una solución que mezcla el código de Jared Rummler y AndroidMechanic .

Nota: fb://facewebmodal/f?href= redirecciona a una página extraña de Facebook que no tiene botones similares y otros importantes, por lo que pruebo fb://page/ . Funciona bien con la versión actual de Facebook (126.0.0.21.77, 1 de junio de 2017). La captura puede ser inútil, la dejé por si acaso.

 public static String getFacebookPageURL(Context context) { final String FACEBOOK_PAGE_ID = "123456789"; final String FACEBOOK_URL = "MyFacebookPage"; if(appInstalledOrNot(context, "com.facebook.katana")) { try { return "fb://page/" + FACEBOOK_PAGE_ID; // previous version, maybe relevant for old android APIs ? // return "fb://facewebmodal/f?href=" + FACEBOOK_URL; } catch(Exception e) {} } else { return FACEBOOK_URL; } } 

Aquí está la función appInstalledOrNot que tomé (y modifiqué) de la respuesta de Aerrow a esta publicación

 private static boolean appInstalledOrNot(Context context, String uri) { PackageManager pm = context.getPackageManager(); try { pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); return true; } catch(PackageManager.NameNotFoundException e) { } return false; } 

Cómo obtener el ID de Facebook de una página:

  1. Ir a tu página
  2. Haga clic con el botón derecho y View Page Source
  3. Buscar en la página: fb://page/?id=
  4. ¡Aqui tienes!

puedes usar esto:

 try { Intent followIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://facewebmodal/f?href=" + "https://www.facebook.com/app_scoped_user_id/"+scoped user id+"/")); activity.startActivity(followIntent); } catch (Exception e) { activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/" + user name))); String errorMessage = (e.getMessage() == null) ? "Message is empty" : e.getMessage(); } 

atención: puede obtener el ID de usuario del scope del permiso de ” enlace ” facebook api

Ya he respondido aquí y está funcionando para mí, consulte este enlace https://stackoverflow.com/a/40133225/3636561

  String socailLink="https://www.facebook.com/kfc"; Intent intent = new Intent(Intent.ACTION_VIEW); String facebookUrl = Utils.getFacebookUrl(getActivity(), socailLink); if (facebookUrl == null || facebookUrl.length() == 0) { Log.d("facebook Url", " is coming as " + facebookUrl); return; } intent.setData(Uri.parse(facebookUrl)); startActivity(intent); 

Por favor, consulte el enlace para obtener parte de descanso.