2012-01-24 14 views
6

Tengo dificultades para obtener un comportamiento específico para la autorización de OAuth mediante la devolución de llamada ubicua con esquema personalizado-> técnica de filtro de intención.devoluciones de llamada del navegador y la locura de la pila de actividad de Android

Mi aplicación se registra para las acciones SEND y, cuando se llama, inicia un servicio que, a su vez, verifica si el usuario ya está autorizado y, si no, genera una actividad (OAuthActivity) para solicitar el inicio de sesión.

Tenga en cuenta que la actividad en primer plano justo antes de que esto ocurra puede ser cualquier cosa. La actividad luego inicia un intento de VER para abrir la página de autenticación en el navegador; este último invoca la devolución de llamada elaborada (con un esquema personalizado definido en manifiesto) y activa la OAuthActivity.

OAuthActivity tiene, actualmente, launchMode="singleTask" pero esto no hace una diferencia desde la perspectiva de la pila (se pone en la parte superior cuando se le devuelve la llamada).

¿Hay alguna manera de borrar la pila de actividades y volver a lo que estaba haciendo el usuario y no forzarlo a retroceder en la actividad del navegador? (A continuación, mostraré una notificación cuando el contenido se haya enviado correctamente en segundo plano)

¿Alguien tiene alguna indicación? Gracias por la lectura a través

+0

ugh esta es mi pregunta también – CQM

Respuesta

1

La actividad se inicia una VISTA intención de abrir la página de autenticación en el navegador

Ese es el problema. Esto funciona para mí: renderice la página web de Oauth en una vista web que controle en lugar de abrirla en la aplicación del navegador.

La página Web oauth, cuando se llama a su devolución de llamada, en realidad será sustituyéndose en la vista web, donde su WebViewClient puede coger esa URL esperada, proceso de los resultados, y el acabado() de la vista web (sacarlo de la pila de la actividad)

+0

De hecho, esto funciona y es el enfoque utilizado por la mayoría de las aplicaciones (¿todas?) En el mercado que necesitan autenticación basada en el navegador. Sin embargo, estoy buscando una solución que aproveche la aplicación del navegador directamente. Estoy empezando a pensar que esto no es factible cuando quieres volver a una actividad que está más abajo en la pila de tareas que el navegador (que es mi caso). – Utaal

+0

tan pronto como se lance, no tiene control. Puede intentar agregar una bandera al intento de Intent.FLAG_ACTIVITY_NO_HISTORY, pero eso no garantiza lo que sucede después de que el navegador toma el control. – larham1

Cuestiones relacionadas