2012-01-24 17 views
6

Sto lottando per ottenere un comportamento specifico per l'autorizzazione OAuth utilizzando il callback onnipresente con la tecnica schema personalizzato-> intent_filter.Chiamate del browser e follia dello stack di attività Android

La mia app registra le azioni SEND e, quando chiamato, avvia un servizio che, a sua volta, controlla se l'utente è già autorizzato e, in caso contrario, genera un'attività (OAuthActivity) per richiedere l'accesso.

Ricordare che l'attività in primo piano prima che ciò accada può essere qualsiasi cosa. L'attività quindi avvia l'intento di VIEW per aprire la pagina auth nel browser; il secondo richiama il callback creato (con lo schema personalizzato definito in manifest) e riattiva OAuthActivity.

OAuthActivity ha, attualmente, launchMode="singleTask" ma questo non fa differenza dal punto di vista dello stack (si attiva quando viene richiamato).

C'è un modo per cancellare lo stack di attività e tornare a ciò che l'utente stava facendo e non costringerlo a spingere indietro l'attività del browser? (Verrà quindi visualizzata una notifica quando il contenuto è stato inviato correttamente in background)

Qualcuno ha qualche suggerimento? Grazie per la lettura attraverso

+0

ugh anche questa è la mia domanda – CQM

risposta

1

L'attività inizia quindi un intento VIEW per aprire la pagina di autenticazione del browser

Questo è il problema. Questo funziona per me: renderizza la pagina web di oauth in una webview che controlli invece di lanciarti nell'app browser.

La pagina Web di oauth, quando chiama la richiamata, si sostituirà automaticamente alla visualizzazione Web, dove WebViewClient può rilevare l'URL previsto, elaborare i risultati e terminare() la visualizzazione Web (rimuoverla dallo stack di attività).

+0

Infatti questo funziona ed è l'approccio utilizzato dalla maggior parte delle app (tutte?) Presenti sul mercato che necessitano di autenticazione basata su browser. Tuttavia, sto cercando una soluzione che sfrutti direttamente l'app del browser. Sto iniziando a pensare che questo non sia effettivamente fattibile quando si vuole tornare ad un'attività che è più bassa nello stack delle attività rispetto al browser (che è il mio caso). – Utaal

+0

non appena si avvia, non si ha il controllo. Puoi provare ad aggiungere un flag all'intento di Intent.FLAG_ACTIVITY_NO_HISTORY, ma ciò non garantisce ciò che accade dopo che il browser ha assunto il controllo. – larham1

Problemi correlati