iniciar la aplicación de Facebook desde otra aplicación

¿Cómo puedo iniciar una aplicación de Facebook desde mi aplicación en Android?

Para iniciar la actividad del iniciador predeterminado:

Intent intent = new Intent("android.intent.category.LAUNCHER"); intent.setClassName("com.facebook.katana", "com.facebook.katana.LoginActivity"); startActivity(intent); 

Hice algunas investigaciones, porque quería descubrir esto :). Encontré algunas formas de comenzar diferentes actividades fácilmente. Pero no puedo garantizar que esto funcione después de las actualizaciones de Facebook. Lo probé con mi aplicación actual de Facebook y funciona. Al menos lo probé con “adb shell” usando “am start …..”.

Básico es:

 String uri = "facebook://facebook.com/inbox"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); startActivity(intent); 

la parte facebook.com no está marcada. incluso puede escribir: “facebook: //gugus.com/inbox” teniendo el mismo efecto.

Cómo hacer esto en adb.

 1. Start adb shell through console: "adb shell" 2. run: "am start -a android.intent.action.VIEW -d facebook://facebook.com/inbox" 

esto iniciará la actividad de la bandeja de entrada. Aquí algunos Uris con ejemplos. Creo que hablan por sí mismos lo que hacen.

 facebook://facebook.com/inbox facebook://facebook.com/info?user=544410940 (id of the user. "patrick.boos" won't work) facebook://facebook.com/wall facebook://facebook.com/wall?user=544410940 (will only show the info if you have added it as friend. otherwise redirects to another activity) facebook://facebook.com/notifications facebook://facebook.com/photos facebook://facebook.com/album facebook://facebook.com/photo facebook://facebook.com/newsfeed 

puede haber parámetros adicionales que pueda dar a algunos de esos uris, pero no tengo tiempo para revisar todo el código de esas actividades.

¿Cómo hice esto? echa un vistazo a apktool.

Mirando la última aplicación de Facebook (1.6), parece que “facebook: //” y “fb: //” son protocolos registrados.

Facebook://

 facebook:/chat facebook:/events facebook:/friends facebook:/inbox facebook:/info facebook:/newsfeed facebook:/places facebook:/requests facebook:/wall 

pensión completa://

 fb://root fb://feed fb://feed/{userID} fb://profile fb://profile/{userID} fb://page/{id} fb://group/{id} fb://place/fw?pid={id} fb://profile/{#user_id}/wall fb://profile/{#user_id}/info fb://profile/{#user_id}/photos fb://profile/{#user_id}/mutualfriends fb://profile/{#user_id}/friends fb://profile/{#user_id}/fans fb://search fb://friends fb://pages fb://messaging fb://messaging/{#user_id} fb://online fb://requests fb://events fb://places fb://birthdays fb://notes fb://places fb://groups fb://notifications fb://albums fb://album/{%s}?owner={#%s} fb://video/?href={href} fb://post/{postid}?owner={uid}¹ 

Perdón si me perdí un poco … solo jugué con un puñado de ellos en el emulador para ver si realmente funcionan; algunos de ellos harán que la aplicación de Facebook falle.

¹ donde postid está en el formato uid_postid , por ejemplo, 11204705797_10100412949637447

Si alguien quiere abrir una foto directamente

 public Intent getOpenFacebookIntent(String pId) { try { activity.getPackageManager().getPackageInfo("com.facebook.katana", 0); return new Intent(Intent.ACTION_VIEW, Uri.parse("facebook:/photos?album=0&photo=" + pId + "&user=" + ownerId)); } catch (Exception e) { return new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/")); } } startActivity(getOpenFacebookIntent(pid)); 

donde ownerId es la id de Facebook del usuario que cargó esta imagen y pid es PhotoId

Disfruta :))

Se puede iniciar otra aplicación desde su aplicación en Android, solo si la acción de Intención que dispara coincide con el filtro de intención de la otra aplicación que desea iniciar.

Como demostró @patrick, descargue facebook.apk al emulador e intente ejecutarlo a través del comando adb shell. Funciona bien..

Pass Intent filter and data como Uri