2012-05-02 10 views
9

Me gustaría que mi aplicación responda al enlace del mercado para mi aplicación. Entonces el enlace es market: // details? Id = my.package.name. Ahora la razón por la que quiero esto es para poder enviar un enlace que abrirá la aplicación si está instalada y abrirá la página del mercado si la aplicación no está instalada. El problema al que me estoy enfrentando es que mi aplicación responderá a todos los enlaces de mercado y no solo a mi enlace de aplicaciones. La razón es que el nombre del paquete está definido en la parte de consulta del Uri. ¿Hay alguna forma de filtrar un intento basado en la parte de consulta del Uri?¿Puedes crear un filtro de intención basado en la consulta?

Respuesta

6

No, lo siento, no puede. Puede restringir un filtro basado en todo a la izquierda del ?, pero eso es todo.

+0

Gracias por la respuesta. Explica por qué no pude hacer que esto funcione. No se menciona claramente en los documentos. – charlest

6

De Android API 19, puede hacerlo, usando ssp, sspPrefix o sspPattern. Ejemplo:

<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="https" 
     android:sspPrefix="//play.google.com/store/apps/details?id=com.example.test" 
    /> 
</intent-filter> 

Con filtro de este tipo, el sistema operativo ofrecerá su aplicación sólo para las direcciones URL con parámetros id=com.example.test, y no ofrecerá cuando no hay tal parámetro. Pero esto solo funciona en Android 4.4+, las versiones anteriores ignorarán sspPrefix.

Ver también este artículo: https://chris.orr.me.uk/android-ssp-data-intent-filter/.

+0

Este método no es confiable, incluso en dispositivos con Android 4.4+, consulte aquí https://stackoverflow.com/questions/46708662/android-sspprefix-is-ignored – CalumMcCall

Cuestiones relacionadas