2010-09-14 26 views
7

1) ¿Hay alguna forma de que pueda enviar una PDU de SMS sin procesar desde un dispositivo Android?SMS raw pdu en Android

O

2) ¿Hay clases disponibles que me puede dar acceso a las cabeceras PDU (por ejemplo, TP-DCS) para que pueda construir la PDU como me gusta?

He buscado la red y encontró: http://www.androidjavadoc.com/1.0_r1_src/com/android/internal/telephony/gsm/ISms.html pero lo anterior clases son privadas y como tales no están disponibles para mí (que en realidad no entiende por qué).

¿Es posible o no lo que estoy pidiendo? Si no, ¿por qué no puedo tener ese tipo de funcionalidad?

Gracias

Respuesta

5

Esta es una característica requested de la API pública.

El desarrollador comenta la sugerencia de usar el sendRawPdu desde la API SMSDispatcher interna, que se puede hacer a través de reflection. Sin embargo, se desaconseja el uso de API privadas para el código de producción

No está claro si es posible enviar utilizando la API pública TelephonyManager.

/* 
* TODO(cleanup): It looks like there is now no useful reason why 
* apps should generate pdus themselves using these routines, 
* instead of handing the raw data to SMSDispatcher (and thereby 
* have the phone process do the encoding). Moreover, CDMA now 
* has shared state (in the form of the msgId system property) 
* which can only be modified by the phone process, and hence 
* makes the output of these routines incorrect. Since they now 
* serve no purpose, they should probably just return null 
* directly, and be deprecated. Going further in that direction, 
* the above parsers of serialized pdu data should probably also 
* be gotten rid of, hiding all but the necessarily visible 
* structured data from client apps. A possible concern with 
* doing this is that apps may be using these routines to generate 
* pdus that are then sent elsewhere, some network server, for 
* example, and that always returning null would thereby break 
* otherwise useful apps. 
*/ 

/** 
* Get an SMS-SUBMIT PDU for a destination address and a message 
* 
* @param scAddress Service Centre address. Null means use default. 
* @return a <code>SubmitPdu</code> containing the encoded SC 
*   address, if applicable, and the encoded message. 
*   Returns null on encode error. 
* @hide 
*/ 
public static SubmitPdu getSubmitPdu(String scAddress, 
     String destinationAddress, String message, 
     boolean statusReportRequested, byte[] header) { 

En conclusión: No está claro si es posible. Tengo la misma pregunta que tú.

+0

Después de tanto tiempo y después de poder volver a iniciar sesión en mi cuenta. Muchas gracias por la respuesta! – zlinks

1

Sé cómo. http://www.silentservices.de/products/android-hushsms/ y xposed framework http://repo.xposed.info/module/de.robv.android.xposed.installer
Deberá rootear su teléfono para hacer uso del módulo xposed 'raw-pdu', pero funciona. Hush-sms proporciona la funcionalidad/extensibilidad de la API para enviar los 7 tipos de sms sin formato.

+0

Cuando publiqué esta pregunta, estaba buscando una solución que no implique rooting para que la aplicación que desarrolle pueda funcionar/instalarse perfectamente en casi todos los teléfonos. Como parece, no hay tal solución disponible. A pesar de que no tengo el tiempo para verificar en este momento, revalidaré tu respuesta, ya que parece una buena alternativa/solución para las personas que todavía están interesadas. – zlinks