¿Por qué no se lanza mi actividad por URL?

Me doy cuenta de que hay varias preguntas similares, pero ninguna de las respuestas aceptadas están funcionando para mí. Como parte de un proceso oauth quiero un redireccionamiento de navegador para iniciar mi actividad. Como he visto en todas partes, he configurado un filtro de intenciones que supuestamente hace eso:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.codesta.test" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".BrowsableActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="oauth.android.mydomain.com" /> </intent-filter> </activity> </application> </manifest> 

Sin embargo, cuando abro el navegador e ingrese http://oauth.android.mydomain.com recibo la página de "página web no disponible". También intenté definir mi propio esquema (que he leído no se recomienda generalmente) pero eso no trabajó tampoco.

Estoy apuntando api nivel 7 y he probado el código en los dispositivos emulados ejecutando 2.1 y 2.2 sin éxito. Cualquier ayuda sería muy apreciada!

He encontrado el mismo problema – En la medida de lo que puedo, varios sitios OAuth utilizan una etiqueta <META … /> para hacer el redireccionamiento final que está intentando atrapar.

Los redireccionamientos que usan la etiqueta META no son capturados por el filtro Intent, por lo que el código nunca se ejecuta. Curiosamente, si el mismo enlace hace clic en el mismo usuario, o se redirige mediante un encabezado Location:, se activa. Ya hay un boleto abierto de 2.2.1 de Android en esto, pero he perdido la referencia a él.

La solución usual es configurar una página real en la URL de devolución de llamada y redirigirla desde allí utilizando un encabezado Ubicación: a otro lugar que PUEDE capturar.

EDIT: Desde que he intentado esto con una ubicación: encabezado, y parece que los redireccionamientos en general a http: // no se capturan, pero redirigir a un esquema diferente (x-oauth: //) es mal visto, pero funciona.

No estoy seguro, puedo probar más tarde, pero creo que cuando lo ingresas en el navegador, estás diciendo al navegador que lo abra.

Lo que podría ser necesario es hacer clic en un enlace que carga ese esquema: // combinación de host, no sólo escribirlo en la "barra de url".

Edit: Lo siento, hice una prueba rápida, y este no es el caso. Sin embargo, el problema puede ser que el navegador intente resolver el host antes de que realmente llegue a la parte de intención y le ofrece a abrirlo con su aplicación. ¿Funciona con una URL real (suponiendo que tenía razón al adivinar que no era una url de resolución real?)

El filtro de intenciones funcionó bien para los esquemas http y https, siempre y cuando utilicé un dominio real. Sin embargo, el popup preguntando al usuario si quieren usar el navegador en lugar de la aplicación era inaceptable. Intenté usar mi propio esquema pero eso no trabajó (ninguna idea porqué).

Para los propósitos de mi aplicación era suficiente para crear una actividad con un WebView en lugar de utilizar el navegador de fleged y sobré el shouldOverrideUrlLoading de las peticiones de WebViewClient y trap para mi uri y enviarlos directamente a mi actividad. Esta solución realmente funciona mejor que lo que estaba tratando de hacer antes, porque el usuario no recibe un mensaje, y no tengo que definir un esquema global.

Ben …

Compruebe si cambia el esquema a https en lugar de http.

  • Intento de archivo de exploración android con extensión definida
  • CONNECTIVITY_CHANGE obsoleta en el objetivo de Android N
  • Android cómo crear un esquema de URL personalizado con el formato dado myapp: // http: //
  • ¿Cuántas etiquetas de esquema y host pueden estar bajo el intento de filtro en android manifiesto?
  • Android BroadcastReceiver sin filtros intencionales
  • Propiedades de difusión para el bluetooth, wifi y el modo de timbre
  • ¿Por qué Filtros de Intención de Etiqueta?
  • GetBoolean (EXTRA_NO_CONNECTIVITY) siempre devuelve false
  • IntentService no se está llamando
  • Cómo compartir imagen + texto juntos usando ACTION_SEND en android?
  • Android External App Install (en la tarjeta SD), vuelva a cargar las alarmas del alarmmanager al re-montar a través del receptor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.