2012-07-04 9 views
10

Sto lavorando a un'applicazione in cui ho bisogno di integrare le funzionalità social dei diversi social network: Facebook, Twitter, Google+.Apri la pagina in Facebook, Twitter e Google Plus dall'altra app - Android

Per ora, in Facebook e Twitter sono riconosciuto se l'utente ha un'applicazione nativa e se lo fa, lo apro e gli mostro la mia fan page.

Per Twitter Io uso il codice successivo:

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]"))); 
    } 

E per Facebook il codice successivo:

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"))); 
} 

Ora voglio fare la stessa cosa per Google+. Ho visto che posso passare alla mia pagina fan con il prossimo Url https://plus.google.com/MY_PAGE_ID/, ma continua a chiedermi se voglio aprirlo con l'applicazione Google+ o con il browser, e voglio che lo apra automaticamente con l'applicazione, senza chiedere l'utente.

C'è un modo semplice per farlo? Grazie.

risposta

11

trovato una soluzione:

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 per te Condivisione del codice. – VenomVendor

+0

hardcoded ... cosa succede se cambiano il nome del pacchetto o qualsiasi altra cosa .. –

+0

@Ovidiu Latcu Per il nome del pacchetto è possibile utilizzare PackageManager per ottenere il nome del pacchetto corretto. –

2

Sconosciuto se google plus necessita di altre informazioni nell'Intent ma come soluzione Android generale è possibile impostare esplicitamente il target. Avrai bisogno del nome del pacchetto di google +.

Maggiori informazioni qui: http://developer.android.com/reference/android/content/Intent.html#setPackage%28java.lang.String%29

Ad esempio:

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

Non aiuta, è sempre lo stesso. Grazie. –

7

Credo che questo sia abbastanza sicuro, perché non abbiamo bisogno di specificare il componente , solo il nome del pacchetto dell'app 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); 
Problemi correlati