在Android中创建SMS应用程序?

Sas*_*ran 9 sms android

我正在创建一个SMS应用程序来发送和接收短信.

我可以使用以下代码发送短信:

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null,message , pi, null); 
Run Code Online (Sandbox Code Playgroud)

我想收到短信并将它们放在我自己的收件箱中.如何创建此收件箱?我希望它的工作方式与普通的收件箱相同.

Bundle bundle = intent.getExtras();     
Object[] pdus = (Object[]) bundle.get("pdus"); 
SmsMessage[] messages = new SmsMessage[pdus.length];    
for (int i = 0; i < messages.length; i++) {

    messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
    Log.v("SMSFun","Body: " + messages[i].getDisplayMessageBody());
    Log.v("SMSFun","Address: " + messages[i].getDisplayOriginatingAddress());   
    //If say we wanted to do something based on who sent it       
    if (messages[i].getDisplayOriginatingAddress().contains("5556")) {

        // we could launch an activity and pass the data   
        Intent newintent = new Intent(ctx, SecretMessage.class);    
        newintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        newintent.putExtra("address", messages[i].getDisplayOriginatingAddress());
        newintent.putExtra("message", messages[i].getDisplayMessageBody());
        ctx.startActivity(newintent);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何将收到的短信存储在收件箱中?

在Android中是否可以收听SMS的特定端口号?

Chr*_*son 2

您需要做的是注册一个BroadcastReceiver对象。查看这篇文章以获取更多信息。

如果您想隐藏主收件箱中的 SMS 消息,则需要从 SMS ContentProvider 中删除它们并使用您自己的 SQLite 数据库来存储它们。另请务必在内容提供程序中将它们标记为已读,以从托盘中删除通知。