test links linking link intent create content app android url android-manifest intentfilter url-scheme

links - test deep link android



Android cómo crear un esquema de URL personalizado con el formato dado myapp:// http:// (3)

He investigado a través de la mayoría de las preguntas y respuestas del esquema de URL personalizado y no he encontrado mi posible respuesta.

Quiero que mi aplicación se inicie haciendo clic en una determinada URL en el navegador (cualquiera en el dispositivo móvil), lo cierto es que mi URL dada no se puede modificar ya que también sirve a la aplicación IOS y se parece a esto

"myapp: // http://www.name.com/path/path2/ "

No estoy seguro de cómo manejar "myapp: // http: //" y construir un filtro de intento adecuado, y todo lo que probé no funciona. Cualquier ayuda será apreciada, y si me perdí una respuesta relevante, por favor, excepto mis disculpas.

Esto es lo que intenté hasta ahora:

<activity android:name="com.myapp.test.SplashScreen" android:exported="true" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- Test for URL scheme --> <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="www.name.com" android:path="/path/path2/" android:scheme="http" /> <data android:host="www.name.com" android:path="/path/path2/" android:scheme="https" /> <data android:scheme="myapp" /> </intent-filter> <!-- End Test for URL scheme --> </activity>

Nota: He intentado con / sin el exportado: verdadero


Como CommonsWare dijo que el URI proporcionado sobre la necesidad de crear un Esquema no es un URI válido, el esquema no funcionó y la aplicación no se lanzó. Después de esta explicación, los chicos del lado del servidor se convencieron de cambiar el URI a myapp: // ... y funcionó como magia :).

La Actividad se ve así ahora:

<activity android:name="com.myapp.test.SplashScreen" android:exported="true" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- Test for URL scheme --> <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> <!-- End Test for URL scheme --> </activity>


Eso es un mal uso del esquema URI y no es válido. La URL HTTP que desea pasar es un dato y, por lo tanto, debe enviarse en la cadena de consulta.

myapp://somehost/action?url=http%3A%2F%2Fwww.name.com%2Fpath%2Fpath2%2F


necesita utilizar un enlace para iniciar la aplicación. por ejemplo, establece el esquema = "su nombre de paquete", necesita configurar un hipervínculo como este: su nombre de paquete: // host, y debe visitar el hipervínculo en su navegador de Moble. Si no tiene la etiqueta de host, simplemente elimínelo.

<!-- Test for URL scheme --> <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="host" android:scheme="yourpackagename" /> </intent-filter> <!-- End Test for URL scheme -->

Si su actividad tiene más de un esquema, debe usar 2 o más para especificarlo