Android:显示收到的短信

时间:2014-06-25 19:36:09

标签: android sms broadcastreceiver abortbroadcast

我正在为Android操作系统创建一个应用程序,它允许用户将加密的SMS发送给其他用户。但我的应用程序只有发送短信的界面,而不是显示它。当应用程序收到短信时,我不想解密它,然后以某种方式通过 bult-in 短信应用程序显示解密的短信。有办法实现吗?现在我的接收器只使用 Toast 显示短信。 这是Receiver的代码(它不完整,但你会得到这个想法):

public class SMSReceiver extends BroadcastReceiver{
private static final byte HANDSHAKE_ID = (byte) 120;
private static final byte ENCRYPTED_ID = (byte) 125;

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Bundle pudsBundle = intent.getExtras();
    Object[] pdus = (Object[]) pudsBundle.get("pdus");
    SmsMessage messages = SmsMessage.createFromPdu((byte[]) pdus[0]);

    Log.i("Message: ",  messages.getMessageBody());

    String msgBody = messages.getDisplayMessageBody();
    byte[] msgBytes = msgBody.getBytes();

    if ( msgBytes[0] == HANDSHAKE_ID ) {
        //Obtain secret key from message
        //TO-DO

        Toast.makeText(context, "Received a secret key from: " + messages.getOriginatingAddress(), Toast.LENGTH_LONG).show();

    } else if ( msgBytes[0] == ENCRYPTED_ID ) {
        //Obtain encrypted message
        //TO-DO

        Toast.makeText(context, plainText, Toast.LENGTH_LONG).show();
    }

 }

如果有可能我想阻止其他应用看到(接收)消息,如果消息的第一个字节是以下常量之一: HANDSHAKE_ID ENCRYPTED_ID 解密后可见?但我要解决的主要问题是如何使用Android的内置SMS应用程序显示明文。谢谢!

0 个答案:

没有答案