sirve - llamar a otra aplicacion desde android studio
Abra la aplicaciĆ³n de Android desde la URL utilizando intent-filter no funciona (3)
@nurieta, tu respuesta hizo el truco para mí, gracias.
Una palabra de advertencia ya que estoy tratando con posibles cadenas de consulta, lo manejé a través de un poco de código en .java para determinar si abrir la aplicación o enviarlo a una ubicación específica en la aplicación. Mi aplicación es solo una WebView que ejecuta una aplicación móvil JQuery.
if(getIntent().getData()!=null){//check if intent is not null
Uri data = getIntent().getData();//set a variable for the Intent
String scheme = data.getScheme();//get the scheme (http,https)
String fullPath = data.getEncodedSchemeSpecificPart();//get the full path -scheme - fragments
combine = scheme+"://"+fullPath; //combine to get a full URI
}
String url = null;//declare variable to hold final URL
if(combine!=null){//if combine variable is not empty then navigate to that full path
url = combine;
}
else{//else open main page
url = "http://www.example.com";
}
webView.load(url);
Tengo una aplicación de Android que las personas usan como reemplazo de un sitio web. Por lo tanto, cuando los usuarios encuentren una URL para el sitio web, quiero darles la opción de "abrir la URL" en mi aplicación en lugar de en el navegador. En otras palabras, quiero que aparezca la ventana emergente que les permite elegir entre mi aplicación y el navegador (y posiblemente otras aplicaciones).
Entiendo por varias fuentes que necesito agregar un filtro de intención a una actividad en mi aplicación con el filtro ''datos'' que filtra las URL de la forma correcta.
El sitio web en cuestión es http://members.iracing.com , por lo tanto, he agregado el siguiente filtro de intención:
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:host="members.iracing.com" />
</intent-filter>
</activity>
He intentado varias formas de estos filtros de datos, como usar un solo nodo de ''datos'' con ambos atributos:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" android:host="members.iracing.com"/>
</intent-filter>
Simplemente no está funcionando. No sé qué más decirte. Organicé una página HTML simple en mi sitio web con un par de enlaces a varias páginas en ese sitio web (todos comenzando con "http: //members.iracing.com / ...") y cuando hago clic en cualquiera de ellos, simplemente abren en el navegador sin preguntarme qué aplicación quiero usar. Lo probé tanto en el emulador como después de instalar la aplicación en mi dispositivo físico, nada funciona. Intenté esto en un proyecto Android completamente nuevo, en BLANCO, solo para ver si eso funcionaría, nada.
Luego me di cuenta de que el sitio web requiere autenticación, y si no está conectado, lo redirecciona a la página de inicio de sesión en https://members.iracing.com/membersite/login.jsp , por lo tanto, traté de reemplazar el esquema por "https". Incluso traté de cambiar el host a "www.members.iracing.com", y al final incluso probé una combinación de todas estas cosas (no estoy seguro de si esto debería funcionar, pero bueno, estoy desesperado en este punto ... ...)
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="members.iracing.com" />
<data android:host="www.members.iracing.com" />
</intent-filter>
Todavía no ir. Aunque no estoy seguro si la redirección es relevante, el navegador primero va al sitio no redirigido, luego lo redirige a la página de inicio de sesión, pero en ningún momento tengo la opción de abrirlo en mi aplicación. Además, si inicio sesión manualmente en el navegador primero, no hay redirección, y todavía no funciona.
¿Me estoy perdiendo algo obvio aquí? Estoy tratando de entender por qué esto no funciona, y no puedo depurarlo además de probar todas las combinaciones posibles en las que pudiera pensar (lo hice ...). ¡Gracias por cualquier ayuda!
Creí que iba a publicar esto aquí porque pasé un tiempo investigando por qué mi filtro de intención no funcionaba. Resulta que estuvo trabajando todo el tiempo, pero los partidos son exactos. Por lo tanto, si registra su intención para http://myexample.com y hace clic en http://myexample.com/blah , no funcionará.
Agregar lo siguiente solucionó el problema:
<data android:pathPattern="/.*" />
Entonces el filtro de intención se ve así:
<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:host="example.com" />
<data android:scheme="https" />
<data android:pathPattern="/.*" />
</intent-filter>
usa estos tres en tu <intent filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />