Skip to content

Instantly share code, notes, and snippets.

@renanferrari
Created October 21, 2015 02:08
Show Gist options
  • Save renanferrari/ea488c8ba4f73b555970 to your computer and use it in GitHub Desktop.
Save renanferrari/ea488c8ba4f73b555970 to your computer and use it in GitHub Desktop.
SmsReceiver for Android
public class SmsReceiver extends BroadcastReceiver {
public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
private static final String KEY_PDUS = "pdus";
@Override public void onReceive(final Context context, final Intent intent) {
if (getActionFromIntent(intent).equals(SMS_RECEIVED_ACTION)) {
final Intent smsServiceIntent = new Intent(context, SmsService.class);
smsServiceIntent.putExtra(SmsService.KEY_SMS, getSmsFromIntent(intent));
context.startService(smsServiceIntent);
}
}
@NonNull private String getActionFromIntent(final Intent intent) {
return intent != null && intent.getAction() != null ? intent.getAction() : "";
}
@NonNull private String getSmsFromIntent(final Intent intent) {
final SmsMessage[] smsMessages = getMessagesFromIntent(intent);
return smsMessages.length > 0 ? smsMessages[0].getMessageBody() : "";
}
@NonNull private SmsMessage[] getMessagesFromIntent(final Intent intent) {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT ? getMessagesFromIntentApi19(intent)
: getMessagesFromIntentApi15(intent);
}
@TargetApi(Build.VERSION_CODES.KITKAT) @NonNull
private SmsMessage[] getMessagesFromIntentApi19(final Intent intent) {
return Telephony.Sms.Intents.getMessagesFromIntent(intent);
}
@SuppressWarnings("deprecation") @NonNull
public SmsMessage[] getMessagesFromIntentApi15(final Intent intent) {
final Object[] pdus = (Object[]) intent.getSerializableExtra(KEY_PDUS);
final SmsMessage[] smsMessages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
smsMessages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
return smsMessages;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment