/**
* Examines the Protocol Description Unit (PDU) data in the text message intent to reconstruct the
* phone number and text message data. Caches the information in global variables in case they are
* needed again.<br>
* TODO(londinop): Further test this method with texts longer than 160 characters, there may be a
* bug in the emulator
*/
private void getMessageData() {
// TODO(londinop): Add text message data retrieval code and write a test for it
Bundle bundle = intent.getExtras();
Object[] pdusObj = (Object[]) bundle.get("pdus");
// Create an array of messages out of the PDU byte stream
SmsMessage[] messages = new SmsMessage[pdusObj.length];
for (int i = 0; i < pdusObj.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
}
// Get the sender phone number from the first message
// TODO(londinop): Can there be multiple originating addresses in a single intent?
phoneNumber = messages[0].getOriginatingAddress();
// Concatenate all message texts into a single message (for texts longer than 160 characters)
StringBuilder sb = new StringBuilder();
for (SmsMessage currentMessage : messages) {
sb.append(currentMessage.getDisplayMessageBody());
}
messageText = sb.toString();
}
java类android.telephony.SmsMessage的实例源码
SMSReceivedEvent.java 文件源码
项目:LibreTasks
阅读 15
收藏 0
点赞 0
评论 0
SmsBroadcastReceiver.java 文件源码
项目:sms-parsing
阅读 20
收藏 0
点赞 0
评论 0
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {
String smsSender = "";
String smsBody = "";
for (SmsMessage smsMessage : Telephony.Sms.Intents.getMessagesFromIntent(intent)) {
smsBody += smsMessage.getMessageBody();
}
if (smsBody.startsWith(SmsHelper.SMS_CONDITION)) {
Log.d(TAG, "Sms with condition detected");
Toast.makeText(context, "BroadcastReceiver caught conditional SMS: " + smsBody, Toast.LENGTH_LONG).show();
}
Log.d(TAG, "SMS detected: From " + smsSender + " With text " + smsBody);
}
}
SMSReceiver.java 文件源码
项目:InternetShopping
阅读 21
收藏 0
点赞 0
评论 0
public void onReceive(Context context, Intent intent) {
if(ACTION_SMS_RECEIVER.equals(intent.getAction())) {
Bundle bundle = intent.getExtras();
if(bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] smsArr = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
smsArr[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage sms: smsArr) {
if(sms != null) {
SMSSDK.readVerificationCode(sms, listener);
}
}
}// END if(bundle != null)
}
}
AtySms.java 文件源码
项目:FirstCodeUtil
阅读 16
收藏 0
点赞 0
评论 0
@Override
public void onReceive(Context context, Intent intent) {
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]);
}
String address = messages[0].getOriginatingAddress();
String fullMessage = "";
for (SmsMessage message : messages) {
fullMessage += message.getMessageBody();
}
sender.setText(address);
content.setText(fullMessage);
abortBroadcast();
}
SmsListener.java 文件源码
项目:TextSecure
阅读 174
收藏 0
点赞 0
评论 0
private boolean isExemption(SmsMessage message, String messageBody) {
// ignore CLASS0 ("flash") messages
if (message.getMessageClass() == SmsMessage.MessageClass.CLASS_0)
return true;
// ignore OTP messages from Sparebank1 (Norwegian bank)
if (messageBody.startsWith("Sparebank1://otp?")) {
return true;
}
return
message.getOriginatingAddress().length() < 7 &&
(messageBody.toUpperCase().startsWith("//ANDROID:") || // Sprint Visual Voicemail
messageBody.startsWith("//BREW:")); //BREW stands for “Binary Runtime Environment for Wireless"
}
SmsReceiveJob.java 文件源码
项目:TextSecure
阅读 17
收藏 0
点赞 0
评论 0
private Optional<IncomingTextMessage> assembleMessageFragments(Object[] pdus) {
List<IncomingTextMessage> messages = new LinkedList<>();
for (Object pdu : pdus) {
messages.add(new IncomingTextMessage(SmsMessage.createFromPdu((byte[])pdu)));
}
if (messages.isEmpty()) {
return Optional.absent();
}
IncomingTextMessage message = new IncomingTextMessage(messages);
if (WirePrefix.isEncryptedMessage(message.getMessageBody()) ||
WirePrefix.isKeyExchange(message.getMessageBody()) ||
WirePrefix.isPreKeyBundle(message.getMessageBody()) ||
WirePrefix.isEndSession(message.getMessageBody()))
{
return Optional.fromNullable(multipartMessageHandler.processPotentialMultipartMessage(message));
} else {
return Optional.of(message);
}
}
SmsUtils.java 文件源码
项目:MobileGuard
阅读 33
收藏 0
点赞 0
评论 0
/**
* Read the PDUs out of an SMS_RECEIVED_ACTION or a
* DATA_SMS_RECEIVED_ACTION intent.
*
* @param intent the intent to read from
* @return an array of SmsMessages for the PDUs
*/
public static SmsMessage[] getMessagesFromIntent(Intent intent) {
Object[] messages = (Object[]) intent.getSerializableExtra("pdus");
String format = intent.getStringExtra("format");
int pduCount = messages.length;
SmsMessage[] msgs = new SmsMessage[pduCount];
for (int i = 0; i < pduCount; i++) {
byte[] pdu = (byte[]) messages[i];
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
msgs[i] = SmsMessage.createFromPdu(pdu, format);
} else {
msgs[i] = SmsMessage.createFromPdu(pdu);
}
}
return msgs;
}
SMSPlugin.java 文件源码
项目:plugnative-cordova-sms
阅读 25
收藏 0
点赞 0
评论 0
private JSONObject getJsonFromSmsMessage(SmsMessage sms) {
JSONObject json = new JSONObject();
try
{
json.put("address", sms.getOriginatingAddress());
json.put("body", sms.getMessageBody());
json.put("date_sent", sms.getTimestampMillis());
json.put("date", System.currentTimeMillis());
json.put("read", 0);
json.put("seen", 0);
json.put("status", sms.getStatus());
json.put("type", 1);
json.put("service_center", sms.getServiceCenterAddress());
}
catch (Exception e) {
e.printStackTrace();
}
return json;
}
MainActivity.java 文件源码
项目:AndroidBasicCommonDemos
阅读 15
收藏 0
点赞 0
评论 0
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[])bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++){
String format = intent.getStringExtra("format");
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i],format);
}
String address = messages[0].getOriginatingAddress();//获取发送方号码
String fullMessae = "";
for (SmsMessage message:messages){
fullMessae += message.getMessageBody();//获取短信内容
}
sender.setText(address);
content.setText(fullMessae);
}
AutoAnswerMessageReceiver.java 文件源码
项目:AutoAnswerCalls
阅读 15
收藏 0
点赞 0
评论 0
public void onReceive(Context context, Intent intent) {
Log.d("AutoAnswer", "I am now in message receiver");
if (context.getSharedPreferences(Constants.SETTING_PREF, 0).getBoolean(Constants.AUTO_ANSWER_MESSAGE_SERVICE, false)) {
try {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
String msgFrom = messages[pdus.length - 1].getDisplayOriginatingAddress();
String msgBody = messages[pdus.length - 1].getDisplayMessageBody();
Log.d("AutoAnswer", "Msg From: " + msgFrom);
Log.d("AutoAnswer", "Msg Body: " + msgBody);
Intent receiveSMSIntent = new Intent();
receiveSMSIntent.setClass(context, AutoAnswerMessageIntentService.class);
receiveSMSIntent.putExtra("msgFrom", msgFrom);
receiveSMSIntent.putExtra("msgBody", msgBody);
context.startService(receiveSMSIntent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}