studio sirve que putextra para intent intenciones example desde boton activity abrir android android-intent uri tel

android - sirve - Envío de pausa al marcador



intent-filter (6)

De forma similar a Sending Pause y entrada DTMF en android , estoy tratando de enviar el carácter de pausa "," al marcador. Esto funciona en teléfonos HTC Sense e incluso en Xoom, pero no en teléfonos con "experiencia de stock" como el Nexus One o el T-Mobile G2 (y sospecho que el Motorola Droid).

Estos teléfonos parecen tener un marcador que intenta formatear el número (es decir, agregar guiones) y detenerse al golpear un carácter de coma. Curiosamente, no se atraganta con un carácter "p", aunque eliminará "p" y seguirá sumando números.

Esto es lo que ve el ActivityManager:

I/ActivityManager( 92): Starting activity: Intent { act=android.intent.action.DIAL dat=tel:8883333,444 cmp=com.android.contacts/.DialtactsActivity }

También probé la forma codificada, "tel: 8883333% 2C444" sin diferencias en el comportamiento de estos teléfonos. Intenté "p", como se mencionó, pero estos caracteres se descartan, lo que da como resultado que los marcadores tengan 888-333-3444 incorrectamente poblados, y no estoy seguro de que "p" sea correcto de todos modos.

Entonces, la pregunta: ¿hay alguna manera de especificar una pausa que funcione en la mayoría o todos los marcadores de Android?



Desde el código fuente de origen latino de Android:

<!-- Pause is a comma. Check PhoneNumberUtils.java to see if this has changed. --> <Key android:codes="44" android:keyLabel="Pause" />

No estoy 100% seguro de si es público, pero es posible que pueda usar:

PhoneNumberUtils.PAUSE


Esto es horrible y peligroso. Las personas de negocios que reciben correos electrónicos de llamadas de conferencia en sus teléfonos tienen que cambiar constantemente de un lado a otro para obtener el número.

Simplemente haz que funcione como debería:

tel://+1-877-555-1212,,,2345678#

Debe marcar la pausa numérica 877 luego marcar el código de la conferencia participante e ''ingresar'' (#) cuando se seleccione en cualquier parte del teléfono.

Es así de simple. El hecho de que esto no funciona en Android es un lanzamiento de ventas de iPhone.


Para referencia futura, RFC-2806 especifica almacenar números de teléfono en el formato:

tel:number;postd=post-dial

Donde number puede comenzar con + para marcar intencionalmente y puede incluir - o . como separador visual y post-dial puede incluir números, letras mayúsculas AD, # , * , p para pausa y w para esperar.


Respuesta corta: Parece que no es posible usar el marcador nativo.

Respuesta larga:

El marcador nativo en Android usa el siguiente código para extraer el número que ingresa al marcador usando un intento

if ("tel".equals(uri.getScheme())) { // Put the requested number into the input area String data = uri.getSchemeSpecificPart(); setFormattedDigits(data, null); return true; }

Dentro del método setFormattedDigits , el número se transforma de esta manera:

String dialString = PhoneNumberUtils.extractNetworkPortion(data);

Mirando los documentos para extractNetworkPortion lo notará, "Extrae la porción de la dirección de red [donde la] porción de la dirección de red lo es todo hasta los separadores de dígitos de control DTMF (pausa o espera) .

Entonces, el código intencionalmente elimina el carácter de pausa y todo lo que viene después. La única alternativa que puedo pensar es reemplazar el marcador o usar la acción ACTION_CALL en lugar de ACTION_DIAL . Eso evitará el marcador, por lo que debe usarse con precaución.


la pausa de marcado ha sido una coma durante 30 años

Si el teléfono Android es compatible con ITUT V.250 ATS8 = 2, debe establecer el retardo causado por la coma en 2 segundos. (es posible que de alguna manera se haya establecido en 0s)

ITUT es una gran organización de estándares, puede descargar sus estándares de forma gratuita.