2011-10-06 15 views
6

Sto implementando le funzioni di condivisione sulla mia applicazione Android. Ho già integrato un selettore di intenti per condividere un messaggio di testo. Ora vorrei creare due scorciatoie: una per accedere alla pagina di Facebook di un utente, un'altra per accedere alla sua pagina di post su Twitter. (come il selettore fanno)Collegamenti alle app Facebook e Twitter postare le pagine

ho trovato questo argomento utile: launch facebook app from other app e ha cercato di trovare la parola giusta (fb: // word) utilizzando il comando di shell ADB, ma io non riesco a capire ("pubblicare", " pubblicare "," postare "," condividere "," condividere "non funzionano).

Poi ho provato a catturare l'intento creato (tramite il registro) sul selettore di intenti quando stavo cliccando su Facebook o Twitter. Ho trovato:

"di partenza: Intent {atto = android.intent.action.SEND tip = text/plain FLG = 0x3000000 CMP = com.twitter.android/.PostActivity (ha comparse)} da 17575 pid" per Facebook, e

"di partenza: Intent {atto = android.intent.action.SEND tip = text/plain FLG = 0x3000000 CMP = com.facebook.katana/.ShareLinkActivity (ha comparse)} da 17575 pid" per Twitter.

ho creato quegli intenti con i seguenti codici (sui pulsanti onClick() metodi):

Intent fbIntent = new Intent(Intent.ACTION_SEND); 
fbIntent.setType("text/plain"); 
fbIntent.setFlags(0x3000000); 
fbIntent.setComponent(new ComponentName("com.facebook.katana", ".ShareLinkActivity")); 
fbIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_text)); 
startActivity(fbIntent); 

Inoltre ho provato in questo modo:

Intent twitterIntent = new Intent(Intent.ACTION_VIEW); 
twitterIntent.setAction("android.intent.action.SEND"); 
twitterIntent.setFlags(0x3000000);     
twitterIntent.setType("text/plain");  
twitterIntent.setComponent(new ComponentName("com.twitter.android", ".PostActivity")); 
twitterIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_text)); 
startActivity(twitterIntent); 

Ma anche se i registri guardare la non succede nulla.

Qualche idea?

+0

che cosa è "0x3000000 "? – NitZRobotKoder

risposta

9

Penso che dovresti usare setClassName invece di setComponent.

intent.setClassName("com.facebook.katana", "com.facebook.katana.ShareLinkActivity"); 

intent.setClassName("com.twitter.android", "com.twitter.android.composer.ComposerActivity"); 

Nota: Le versioni recenti di Twitter stanno usando 'com.twitter.android.composer.ComposerActivity' (invece di 'com.twitter.android.PostActivity')

+0

Sapevo che c'era un modo semplice per farlo! Grazie mille @Jompis, il tuo post mi ha salvato !! – Noneu

+0

INCREDIBILE, funziona !!! – NullPointerException

+1

Qualcuno dovrebbe conoscere il nome della classe per aprire solo l'applicazione twitter? intent.setClassName ("com.twitter.android", "com.twitter.android"); Apparentemente questo non funziona. – SoH

Problemi correlati