我正在为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应用程序显示明文。谢谢!