Esquema de url personalizado de Android.?

Estoy tratando de crear mi propio esquema de URL para que mi aplicación de Android se puede llamar a través de una URL, pero por ahora no tengo un éxito.

Estoy tratando de tener esta url para trabajar: cedemo: //com.cedemo.scan? X = toto

Aquí es parte de mi archivo de manifiesto:

<activity android:name=".Gallery1" android:label="@string/app_name" android:launchMode="singleTask" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.GALLERY" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="cedemo" android:host="com.cedemo.scan" /> </intent-filter> </activity> 

¿Alguien puede ayudarme a decirme qué está mal? Además, si alguien encuentra lo que está mal, ¿alguien puede decirme cómo leí la variable "X" desde el interior del código android de mi aplicación?


Actualizar:

Actualización: Hice la modificación de la acción (como se aconseja en una de las respuestas) y ha funcionado bien. La cosa es que todavía no puedo conseguir el valor de la variable url. Aquí está el código que intenté.

 final Intent intent = getIntent(); final String myScheme=intent.getScheme(); final Bundle myBundle=intent.getExtras(); final boolean inContestKey; if (myBundle != null) { inContestKey=myBundle.containsKey("inContest"); } final Uri myURI=intent.getData(); final String value; if (myURI != null) { value = myURI.getQueryParameter("inContest"); } 

Pero recibiendo null de todas las funciones … ¿qué más puedo hacer?

Puede ser que debo explicar mejor el contexto de mi software:

  1. Se ha iniciado mi software
  2. Mi software inicia el navegador
  3. El usuario hace clic en un enlace en el navegador y el navegador ir al esquema de url, volver al software con una variable "X" (por ejemplo)
  4. El software debe leer la variable "X"

Pero en mi caso: myScheme , myBundle , myURI están establecidos en null .

Algunas ideas ?


Actualizar:

He encontrado la respuesta es que usted tiene que estar en la actividad principal para hacer eso.

Creo que el problema es con la Acción que definiste. Hay un "android.intent.action.VIEW" que es lo que creo que quieres.

 <activity android:name=".Gallery1" android:label="@string/app_name" android:launchMode="singleTask" android:screenOrientation="portrait"> <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="cedemo" android:host="com.cedemo.scan" /> </intent-filter> </activity> 

Trate de que y apuesto a resolver correctamente. Sólo hice esta suposición porque incluía la categoría navegable que usualmente se utiliza en el explorador, que no conoce ninguna de sus acciones personalizadas. Si desea que la acción GALLERY como se ha implícito a continuación, sólo crear 2 filtros

 <activity android:name=".Gallery1" android:label="@string/app_name" android:launchMode="singleTask" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.GALLERY" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="cedemo" android:host="com.cedemo.scan" /> </intent-filter> <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="cedemo" android:host="com.cedemo.scan" /> </intent-filter> </activity> 

Así que dentro del contenido de su actividad puede hacer algo como:

 // Value should be "toto" as in your example String value = getData().getQueryParameter("X"); 

Lo que finalmente arregló las cosas para mí fue cambiar el orden de los elementos XML. Específicamente, cambiar las filas de datos y de acciones para que los datos estén antes de la acción hizo que empezara a funcionar.

  <intent-filter> <data android:scheme="myappname" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 

Y para la integridad, mi enlace en el html es "myappname: // noop".

Una cosa más, me gustaría arrojar luz. Inicialmente no funcionaba para mí porque estaba usando las etiquetas de Main / Launcher antes de Ver / Default / Browsable / data.

Una vez que cambié el orden que comenzó a trabajar bien. Ie Inicialmente no funciona el código

 <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"/> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="myapp" /> </intent-filter> 

Código correcto

  <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="myapp" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> 

Y la forma de probar para Android es muy simple. Hacer cualquier archivo html insertar

 <a href="myapp://http://www.google.com/">test to launch myapp</a> <br /><br /> 

Simplemente abra este archivo html y haga clic en prueba para …. 🙂

  • ¿Es posible mostrar una miniatura de vídeo desde una URL en Android 4 o superior?
  • ¿Cómo es posible tener feeds de diferentes Urls en el mismo ListView
  • ¿Cómo iniciar la aplicación de Android desde la URL en android?
  • ¿Cómo puedo solucionar este UnknownHostException?
  • Android: establece ImageView en la URL
  • Cómo obtener datos de una url
  • ¿Cómo evitar la redirección de Url?
  • ¿Cómo puedo iniciar mi aplicación a través de una URL personalizada en un correo electrónico
  • Android: longitud máxima de url
  • Obtenga la colección de nombres de parámetros de la url de Java / Android
  • Facebook Compartir imagen Url junto con el enlace en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.