2010-09-14 12 views
7

1) Est-il possible que je puisse envoyer un PDU SMS brut à partir d'un appareil Android?SMS brut pdu dans Android

Ou,

2) sont là toutes les classes disponibles qui peuvent me donner accès aux en-têtes de PDU (par exemple TP-DCS) pour que je puisse construire la PDU comme je l'aime?

J'ai cherché sur le net et trouvé: http://www.androidjavadoc.com/1.0_r1_src/com/android/internal/telephony/gsm/ISms.html mais les classes ci-dessus sont privées et en tant que tels ne sont pas disponibles pour moi (pas vraiment compris pourquoi).

Est-ce que ce que je demande est possible d'une manière ou d'une autre? Si non alors pourquoi je ne peux pas avoir ce genre de fonctionnalité?

Thanx

Répondre

5

Ceci est une fonctionnalité requested pour l'API publique.

Les commentaires du développeur suggèrent d'utiliser le sendRawPdu de l'API interne SMSDispatcher, ce qui peut être fait via reflection. Cependant, l'utilisation d'API privées pour le code de production est fortement déconseillée

Il n'est pas clair s'il est possible d'envoyer en utilisant l'API publique 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 conclusion: On ne sait pas si cela est possible. J'ai la même question que toi.

+0

Après tant de temps et après avoir pu me reconnecter à mon compte. Merci beaucoup pour la réponse! – zlinks

1

Je sais comment. http://www.silentservices.de/products/android-hushsms/ et xposed cadre http://repo.xposed.info/module/de.robv.android.xposed.installer
Vous aurez besoin de rooter votre téléphone pour utiliser le module xposed 'raw-pdu', mais cela fonctionne. Hush-sms fournit la fonctionnalité api/extensibilité pour envoyer les 7 types de sms bruts.

+0

Lorsque j'ai posté cette question, je cherchais une solution qui n'implique pas l'enracinement pour que l'application que vous développez puisse fonctionner/être installée de façon transparente dans presque tous les téléphones. Comme il semble, il n'y a pas une telle solution disponible. Bien que je n'aie pas le temps de vérifier maintenant, je vais augmenter votre réponse car elle ressemble à une bonne alternative/solution de contournement pour les personnes qui sont toujours intéressées. – zlinks