2010-11-16 13 views

risposta

45

Per avviare solo il difetto di attività Launcher:

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

ho fatto qualche ricerca, perché volevo scoprirlo :). Ho trovato alcuni modi per iniziare facilmente diverse attività. Ma non posso garantire che funzionerà dopo gli aggiornamenti di Facebook. L'ho provato con la mia attuale app per Facebook e funziona. Almeno l'ho provato con "adb shell" usando "am start .....".

di base è:

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

la parte facebook.com non viene controllato. puoi anche digitare: "facebook: //gugus.com/inbox" con lo stesso effetto.

Come fare questo in adb.

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

avvia l'attività della posta in arrivo. Ecco alcuni Uris con esempi. Penso che parlino da soli quello che fanno.

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 

ci potrebbero essere additianl parametri si può dare ad alcuni di quegli URI, ma non ho tempo di passare attraverso tutto il codice di tali attività.

Come ho fatto? controlla apktool.

+1

Sembra che questo non funzioni più (ed è sicuramente usato!). facebook: //facebook.com/wall? user = 123apre semplicemente Facebook all'attività Stream e non al muro dell'utente specificato. – NPike

+1

Capito, vedi il mio post qui sotto sui nuovi protocolli. – NPike

+0

Ciao Patrick: Qui si apre l'app facebook installata, Ma ho bisogno di aprire l'app di Facebook con lo stato di aggiornamento aperto insieme all'immagine allegata allo stato, come ottenere questo ...? qualsiasi aiuto è molto apprezzato ... –

1

L'avvio di un'altra applicazione dall'applicazione in Android, può essere eseguito solo se l'azione Intenzione attiva le corrispondenze con il filtro intent di un'altra applicazione che si desidera avviare.

Come dimostrato da @patrick, scaricare facebook.apk in emulatore e provare ad eseguirlo tramite il comando adb shell. Funziona bene ..

Filtro passa intenti e dati come Uri

64

Guardando al più tardi apk Facebook (1.6), sembra che sia "facebook: //" e "fb: //" sono registrati protocolli.

facebook: //

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

fb: //

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}¹ 

dispiace se ho perso un po '... solo giocato con una manciata di loro nell'emulatore per vedere se realmente funzionano - Un sacco di loro causerà l'arresto anomalo dell'applicazione di Facebook.

¹ dove postid è nel formato uid_postid, e.g 11204705797_10100412949637447

+0

Stavo proprio per giocherellare per questo. Grazie. Posso confermare che questi funzionano. –

+0

@NPike c'è comunque il collegamento diretto a una foto? Ho l'uid e un link http con il "fotoid". –

+7

È stato documentato da qualche parte? Ho provato a cercarlo ma non sono riuscito a trovarlo da nessuna parte. Quindi è possibile che un giorno questo rompa anche la nostra app, vero? – Enigma

9

Se qualcuno vuole aprire direttamente una foto

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

dove ownerId è il Facebook id dell'utente che ha caricato questa foto e pid è PhotoId

Enjoy :))

+0

Non funziona per me. C'è una domanda a parte dove viene citata questa risposta (http://stackoverflow.com/questions/36251372/how-to-open-a-specific-album-or-photo-in-facebook-app-using-intent-from- proprio) e non funziona nemmeno per altre persone. – Bartek

+0

Ciao @Bartek Questa risposta è troppo vecchia. Quella volta stava funzionando. Ci sono così tante modifiche nell'app per Facebook. Potrebbe essere questo non funzionerà ora. Ci scusiamo per questo. – Sunny

Problemi correlati