`

【转】数据短信

 
阅读更多

Objective


Use SMS to send and receive raw data within your App.

Issue


When you want send information with the function SMSManager#sendTextMessage, the sent SMS is stored in the sent messages list, then it triggers a notification when the recipient received this message and the system store it in the inbox in plain text.
With this method, there is not security and it's annoying for the user, because he has to clean up its inbox.

Solution

Steps

1. Send your message on a specific port with the SMSManager#sendDataMessage function
2. Register a BroadcastReceiver on the same port
3. Add the required permissions in your manifest

Details

1. Send your message on a specific port with the SMSManager#sendDataMessage function

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void sendMessage(final byte[] message) {
    //define the phone number
    final String port = "90";
    final String phoneNumber = "5146792345"
    //intent broadcasted when the SMS is sent
    final PendingIntent sendIntent = PendingIntent.getBroadcast(
            this.context, 0, new Intent(0), 0);
    //intent broadcasted when the SMS is received
    final PendingIntent delivery = PendingIntent.getBroadcast(
            this.context, 0, new Intent(0), 0);
    //send data
    final SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendDataMessage(phoneNumber, "", port,
            message, sendIntent, delivery);
}



2. Register a BroadcastReceiver on the same port

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
BroadcastReceiver receivedBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        final Bundle bundle = intent.getExtras();
        SmsMessage[] msgs = null;
 
        if (null != bundle) {
            final Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];
            byte[] data = null;                   
            //read data
            for (int i = 0; i < msgs.length; i++) {
                msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                data = msgs[i].getUserData();
            }
            if (data != null) {
               //use data
            }
        }
    }
};
//register the receiver
final String port = "90";
final IntentFilter intentFilter = new IntentFilter(
        "android.intent.action.DATA_SMS_RECEIVED");
intentFilter.addDataScheme("sms");
intentFilter.addDataAuthority("*", port);
this.context.registerReceiver(this.receivedBroadcastReceiver,
        intentFilter);



3. Add the required permissions in your manifest.

1
2
<uses -permission="-permission" android:name="android.permission.SEND_SMS" />
<uses -permission="-permission" android:name="android.permission.RECEIVE_SMS" />
 
转自:http://blog.fordemobile.com/2012/09/use-sms-to-send-and-receive-raw-data.html
分享到:
评论

相关推荐

    英文短信数据集

    标题中的“英文短信数据集”指的是一个专门收集和整理的英文短信集合,通常用于自然语言处理(NLP)任务,如文本分类、情感分析、垃圾邮件过滤等。这个数据集包含了大量的英文短信样本,每条短信都可能带有特定的...

    中文短信编码转换工具

    PDU模式下的短信以16进制表示,包含一系列控制信息和编码后的数据。它由多个部分组成,如SMS-SUBMIT类型、目的地址、源地址、消息中心号码、时间戳、消息状态报告请求等,并且使用7位的UCS-2编码(Universal ...

    短信猫USB驱动,将USB转串口

    短信猫是一种特殊的通信设备,主要用于通过手机网络进行数据传输,如发送和接收短信、拨打电话等。在IT领域,短信猫常被用作自动化通信解决方案的一部分,尤其在远程监控、报警系统、物联网设备中广泛应用。当短信猫...

    垃圾短信检测数据集.7z

    《垃圾短信检测:深入理解数据集与应用》 在当今信息爆炸的时代,垃圾短信成为了一种常见的骚扰形式,严重影响了用户的通信体验。为了有效对抗这一问题,数据科学家和机器学习专家们开发出了垃圾短信检测系统,其中...

    短信pdu编码解码_短信_短信PDU编码_pdu_

    短信PDU编码是一种二进制编码格式,它将短信内容和接收者的电话号码转换为一系列的二进制数据。这种编码方式允许短信通过GSM网络的7位、8位或16位数据通道进行高效传输。编码过程通常包括以下几个步骤: 1. **电话...

    GPRS发送短信和数据采集

    在本文中,我们将深入探讨使用C语言进行GPRS短信发送和数据采集的相关知识点。 1. **GPRS原理**: GPRS通过将语音通道转换为数据通道,允许用户在不占用语音线路的情况下进行数据传输。它提供了一种始终在线的连接...

    短信收发、短信发送usb转com 测试demo

    本文将围绕“短信收发、短信发送USB转COM测试demo”这一主题,深入探讨相关技术知识,以及如何利用提供的SMSRedSky.ocx控件进行短信操作。 首先,我们需要理解短信收发的基本原理。短信服务(SMS,Short Message ...

    基于大数据挖掘分析的垃圾短信治理方案.pdf

    在垃圾短信治理中,大数据技术能够处理TB到PB级别的数据量,且具备对非结构化或半结构化数据进行分析的能力,从而克服传统数据处理工具在处理大数据时面临的困难。 垃圾短信治理方案中,首先构建垃圾短信用户识别...

    安卓短信转到iPhone

    "安卓短信转到iPhone"这一主题就是针对这一需求,旨在帮助用户将Android手机中的短信和MMS(多媒体短信)无缝转移到iPhone上。在这个过程中,用户可能会遇到各种挑战,如数据格式不兼容、无直接同步功能等。下面我们...

    abcnokia把短信转换为txt格式.zip

    这通常涉及到读取手机中的短信数据,这些数据可能以特定数据库格式或者专有格式存储,然后将其解析并导出为TXT格式。这种转换过程对于那些希望在没有原始手机或不支持原格式的设备上查看短信的人来说非常有用。将...

    基于机器学习的垃圾短信识别应用.docx

    将 PCA 应用于朴素贝叶斯算法中,可以帮助我们更好地理解和分析短信数据。 基于机器学习的垃圾短信识别应用是一种十分实用的应用。它不仅可以有效地识别出垃圾短信,还可以帮助用户更好地管理短信。相信随着技术的...

    机器学习之-基于文本内容的垃圾短信识别-所需数据.rar

    "机器学习之-基于文本内容的垃圾短信识别-所需数据.rar"这个压缩包文件显然提供了进行此类分析所需要的数据集。 首先,我们要理解文本内容的预处理步骤。在这个任务中,预处理至关重要,包括分词(将句子分解成单词...

    短信编码PDU生产解析工具

    在IT行业中,尤其是在移动通信和嵌入式系统领域,短信编码和PDU(Protocol Data Unit,协议数据单元)是至关重要的概念。对于初学者来说,理解这些知识点是开发GSM(Global System for Mobile Communications,全球...

    PDU短信编解码demo,c语言

    PDU模式是短信服务中心(SMSC)与手机之间交换短信的一种方式,它使用二进制编码来传输数据。在C语言中实现PDU短信的编解码可以帮助开发者理解短信传输的底层工作原理,以及如何在实际应用中处理这类通信任务。 ...

    邮件短信自动通知系统(转)

    系统应有数据加密措施,防止数据泄露,同时,发送短信和邮件时应遵循反垃圾邮件法规,避免被标记为垃圾信息。 综上所述,构建一个邮件短信自动通知系统是一项综合性的工程,涵盖了服务器管理、数据库设计、编程、...

    短信UCS编码或解码工具

    PDU编码是短信在GSM网络中传输的标准格式,它将文本信息转化为二进制数据,包括消息类型、目标地址、编码方式等信息。PDU解码则是将接收到的二进制数据还原成可读的文本信息。 在使用"短信UCS编码或解码工具"时,...

    可变短信内容转换

    1. 初始化串行通信:STM32与SIM卡模块或内置的GSM/GPRS模块通过串行接口进行通信,确保波特率、数据位、停止位和校验位设置正确。 2. 设置短信服务:使用AT+CSCS命令设置短信编码格式,通常为"GSM",即7位GSM ...

    短信群发源码,支持一键导入、一键发送

    短信群发源码是一种用于批量发送短信的程序...总结,短信群发源码涉及到的技术点广泛,涵盖了网络通信、数据处理、文件操作、并发控制、API设计等多个方面。理解和掌握这些知识点,对于开发和维护这样的系统至关重要。

    短信PDU解析工具

    在无线通信中,特别是在GSM(Global System for Mobile Communications)系统中,短信是以PDU模式传输的,这是一种二进制编码的形式,用于确保数据在不同网络设备间准确无误地传递。PDU解析工具可以帮助用户理解并...

    基于短信猫,采用PDU编码的短信收发java实现

    在这个类中,会调用`PduPack.java`中的方法将待发送的文本消息转化为PDU,然后通过串口将PDU数据发送给短信猫,短信猫再将其发送到指定的手机号码。 在实际应用中,开发者还需要处理各种异常情况,如串口通信失败、...

Global site tag (gtag.js) - Google Analytics