java类android.telephony.SmsMessage的实例源码

SMSReceivedEvent.java 文件源码 项目:LibreTasks 阅读 15 收藏 0 点赞 0 评论 0
/**
 * 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();
}
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();
        }
    }
}


问题


面经


文章

微信
公众号

扫码关注公众号