2012-07-04 20 views
10

Estoy trabajando en una aplicación donde necesito integrar la funcionalidad social de las diferentes redes sociales: Facebook, Twitter, Google+.Abrir página en la aplicación Facebook, Twitter y Google Plus desde otra aplicación - Android

Por el momento, en Facebook y Twitter me reconocen si el usuario tiene una aplicación nativa y si lo hace, la abriré y le mostraré mi página de fans.

Por Twitter utilizo el siguiente código:

try { 

    Intent intent = new Intent(Intent.ACTION_VIEW, 
     Uri.parse("twitter://user?screen_name=[user_name]")); 
    startActivity(intent); 

    }catch (Exception e) { 
     startActivity(new Intent(Intent.ACTION_VIEW, 
      Uri.parse("https://twitter.com/#!/[user_name]"))); 
    } 

Y para Facebook el siguiente código:

try{ 

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/" + PROFILE_FACEBOOK_APP_ID)); 
startActivity(intent); 

}catch(Exception e){ 

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com/UserNamePage"))); 
} 

Ahora quieren hacer lo mismo para Google+. Vi que puedo navegar a mi página de fans con la siguiente Url https://plus.google.com/MY_PAGE_ID/, pero me sigue preguntando si quiero abrirla con la aplicación Google+ o con el navegador, y quiero que la abra automáticamente con la aplicación, sin preguntar el usuario.

¿Hay una manera simple de hacer esto? Gracias.

Respuesta

11

encontrado una solución:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setClassName("com.google.android.apps.plus", 
"com.google.android.apps.plus.phone.UrlGatewayActivity"); 
intent.putExtra("customAppUri", "FAN_PAGE_ID"); 
startActivity(intent); 
+3

+1 para ti Compartir el código. – VenomVendor

+0

codificados ... ¿qué pasa si cambian el nombre del paquete o lo que sea ... –

+0

@Ovidiu Latcu Para el nombre del paquete, puede usar PackageManager para obtener el nombre correcto del paquete. –

2

Desconocido si google plus necesita alguna otra información en el intento, pero como solución general de Android puede establecer explícitamente el objetivo. Necesitarás el nombre del paquete de google +.

Más información aquí: http://developer.android.com/reference/android/content/Intent.html#setPackage%28java.lang.String%29

Por ejemplo:

Intent.setPackage("com.google.android.apps.plus"); //Don't know the exact package name 
+0

No está ayudando, sigue siendo el mismo. Gracias. –

7

Creo que esto es bastante seguro, ya que no es necesario especificar el componente , solo el nombre del paquete de la aplicación google +:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("https://plus.google.com/[Google+ID]/")); 
intent.setPackage("com.google.android.apps.plus"); // don't open the browser, make sure it opens in Google+ app 
startActivity(intent); 
Cuestiones relacionadas