Si vous êtes intéressé par de longs messages texte, vous pouvez l'essayer
Réécrivez-vous selon la méthode Python
/ *** PDU SMS Analyse *** @param pDupayload * @ return * / public static String RetrievesmsInfo (byte [] pDupayload) lance unportEdenCcodingException {int startpos = 3; // # originator adresse MRP_OA_LEN = pDuPayload [startpos]; Byte [] mrp_oa = newa BYTE [MRP_OA_LEN]; System.ArrayCopy (Pdupayload, startpos + 1, MRP_OA, 0, MRP_OA_LEN); startpos = startpos + 1 + mrp_oa_len; int mtpdu_len = pDupayload [start-rp-rp-rp. Tp-udhi tp-spr tp-vpf tp-rd tp-mti // # downlink tp-rp tp-udhi tp-sri tp-mms tp-mti byte tp_header = pDupayload [startpos + 1]; byt tp_msg_ref = pDupayload [startPos + 2]; int tp_udhi = (tp_header> 6); & 1; // Le contenu du message texte contient des informations d'en-tête de protocole, 0 n'inclut pas, 1 contient (message texte long, message texte push) int tp_vpf = (tp_header >> 3) & 3; // Si le message texte contient des octets de période valides, 0 n'inclut pas, d'autres incluent // # 00 signifie qu'il n'y a pas de période valide, TP-VP est défini sur 00. // # 10 représente le format relatif et TP-VP prend 1 octet. // # 01 signifie l'ajout de format, TP-VP prend 7 octets. // # 11 signifie format absolu, TP-VP occupe 7 octets int tp_mms = (tp_header >> 2) & 1; // # tp-mms (tp-more-message-to-sennd): 1 pas plus de messages envoyés dans le SMS Center StartPos = startpos + 3; // ## nombre opulaire bysnedda = (smsnumberlen + 1) / 2 + 1; byte [] mtp_da = new byte [mtp_da_len]; system.arraycopy (pdupayload, startPos + 1, mtp_da, 0, mtp_da_len * 1); byte [byte [byte BYTE [mtp_da.length - 1]; System.ArrayCopy (MTP_DA, 1, SmsNumberraw, 0, mtp_da.length - 1); String SmsNumber = ""; int j = 0; for (int i = 0; i <smsNumberlen; i ++) {if ((i & 1) == 0) {smsNumber = smsnumb (smsNumberraw [j] & 0xf);} else {smsNumber = smsNumber + (int) ((smsNumberraw [j] & 0x0ff) >> 4); j ++;}} startpos = startpos + 1 + mtp_da_len; byte mtp_pid = pDupayload [startpos]; Pdupayload [startpos + 1]; // # "00" signifie utiliser le codage 7 bits, défini sur "02" pour utiliser le codage 8 bits et défini sur "08" pour utiliser le codage UCS2. startpos = startpos + 2; if (tp_vpf == 2) {startPos = startpos + 1;} else if (tp_vpf == 1 || tp_vpf == 3) {startPos = startpos + 7;} // # sms long: 6 champs doivent être ajoutés à l'avant du contenu // # 1. 0x05; // # 2. BYTE 2: Le type d'en-tête, remplit correctement 0x00, indiquant de longs SMS; // # 3. BYTE 3: La longueur du sous-packet, remplit correctement 0x03, indiquant la longueur des trois octets suivants; // # 4. BYTE 4 à BYTE 6: Contenu du package: // # A) BYTE 4: Numéro de référence du message long. Chaque numéro de référence envoyé par chaque SP à chaque utilisateur doit être différent. Vous pouvez commencer à partir de 0 et en ajouter 1 à chaque fois, avec un maximum de 255, afin que le même terminal puisse identifier différents messages longs de messages du même SP; // # b) Byte 5: Le nombre total de messages dans ce long message, de 1 à 255, généralement la valeur doit être supérieure à 2; // # c) BYTE 6: Le numéro de position ou de séquence de ce message dans le message long, de 1 à 255, le premier est 1, le second est 2, et le dernier est égal à la valeur du quatrième octet. // # Exemple: // # 05 00 03 00 02 01 // # 05 00 03 00 02 02 int smspayloadlen = pDupayload [startpos]; startpos = startpos + 1; string smscontent = ""; if (tp_udhi == 1) {// # long smose-inverified peut nécessiter un non-SmStoal = PDUPAYS + 4]; byte smSidx = pDupayload [startPOS + 5]; startPOS = startPos + 6; smsContent = "long sms (" + bytetohex (smsidx) + "/" + bytetohex (smStotal) + "}"; smsContent = new String (smScontentLenLes ("gbk"); - 6;} byte [] smspayload = new byte [pdupayload.length - startpos]; system.arraycopy (pDupayload, startpos, smspayload, 0, pDupayload.length - startpos); if (mtp_dcs == 0) {// # 7-bit encoding-smespayloadLen = (smspayload * 7 bits) 8; int asciidata = 0; int lastByterEmain = 0; pour (int i = 0; i <smspayloadlen; i ++) {asciidata = asciidata + ((smspayload [i] & 0x0ff) << lastByterEmain); smscontent = smScontent + (char) ((asciidata & 0x0ff) & 0x7f); asciidata >> 7; lastByterEmain = LastByterEmain + 1; if (lastByterEmain> = 7) {smScontent = smScontent + (char) ((asciidata & 0x0ff) & 0x7f); asciidata = Asciidata >> 7; LastByterEmain = LastByterEmain - 7;} o}}} else if (mTp_d ==) {// # ucs-2 - vérifié pour être analysé normalement pour (int i = 0; i <smspayloadlen; i = i + 2) {int cc1 = (smspayload [i] & 0x0ff) * 256; int cc2 = smspayload [i + 1] & 0x0ff; smScontent = smScontent + (char) (cc1 + cc2);}} return smsNumber + ":" + smScontent;};Ce qui précède est une analyse complète du décodage SMS Java PDU introduit par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!