webapk open intent android google-chrome mobile iframe android-intent

webapk - android intent open url



¿Cómo paso los parámetros a Android Intent en un nuevo esquema en Chrome? (4)

Tengo una aplicación web que llama a una aplicación nativa en Android mediante un intento de iframe que no funciona en Chrome 25 de acuerdo con lo siguiente ...

https://developers.google.com/chrome/mobile/docs/intents

El intento fue estructurado como el siguiente ...

aplicación: // Requesttype = Testing & Type = 123 & tn = 0000000000

En el nuevo intento: // esquema ¿cómo voy a pasar los parámetros enumerados después de la aplicación: // a la aplicación nativa? No he podido encontrar un ejemplo.


Con el nuevo esquema, puede pasar argumentos como extras a la aplicación, pero debe codificar el URI de la siguiente manera:

<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.myextra=mystring;end">Do Whatever</a>

Esto pasará una cadena extra llamada "myextra" con el valor "mystring". Echando un vistazo al code.google.com/p/android-source-browsing/source/browse/core/… podemos ver cómo se deben codificar los parámetros adicionales. La " S " al comienzo del parámetro "myextra" lo define como una Cadena. Otros tipos pueden ser:

String => ''S'' Boolean =>''B'' Byte => ''b'' Character => ''c'' Double => ''d'' Float => ''f'' Integer => ''i'' Long => ''l'' Short => ''s''

Por ejemplo, si queremos pasar dos parámetros adicionales, un entero y una cadena, podemos hacer esto:

<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.name=Perico%20de%20los%20Palotes;i.age=35;end">Do Whatever</a>

Tenga en cuenta que necesitará codificar en url todos los parámetros.

En su aplicación de Android, tendrá que aceptar esos extras. En el evento "onCreate" de tu actividad:

Bundle parametros = getIntent().getExtras(); if (extras != null){ String name = extras.getString("name"); Integer age = extras.getInt("age"); if (name!=null && age!=null) { //do whatever you have to //... } }else{ //no extras, get over it!! }

Y, por supuesto, agregue el filtro android.intent.category.BROWSABLE en su manifiesto como se muestra en este enlace .


Las intenciones no funcionan después de 4.4.4, entonces esto es lo que estoy haciendo para mi aplicación.

creado un esquema personalizado para iniciar mi actividad en AndroidManifest.xml con el siguiente filtro de intención

1)

<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="<<YOUR UNIQUE SCHEME(I SUGGEST YOUR PACKAGE NAME)"/> </intent-filter>

2) Construye la URL del mercado con la URL de reserva que abre tu aplicación a través del esquema personalizado creado anteriormente.

market://details?id=<<your app package from AndroidManifest.xml>>&url=<<your app custom scheme from AndroidManifest.xml>>://yourdomain.com?encoded(p1=v1&p2=v2....etc)

esto abre la tienda si su aplicación no está instalada, y abre la aplicación con los datos de intención si la aplicación ya está instalada, con sus parámetros decodificados.

Espero que esto ayude


Para el esquema URL:

appname://RequestType/?Type=123&tn=0000000000

Querrá asignar a una URL de intención de:

intent://RequestType/?Type=123&tn=0000000000#Intent;scheme=appname;package=com.example.appname;end


Ya no puede usar un iframe y un protocolo personalizado para abrir una aplicación nativa.

Sin embargo, puede utilizar la sintaxis de intento existente : // para iniciar e intentar y pasar datos, tiene la ventaja adicional de llevar al usuario a Play Store si no está instalado.

Usted codifica los datos en la parte "ruta" de la sintaxis tal como está documentada para que pueda tener la intent://play/?a=1#Intent;......;end; o podrías codificarlo como Extra.