Using the CommonsWare example, I was able to create this (which works):
[manifest settings]
1.Set the target SDK to 4 (or higher) (Android 1.6+)
2. Set the minimum SDK to 3 (Android 1.5)
[OfflineSMSReceiver.java]
import java.util.Date; import com.apps.myapp.Utilities; import com.apps.myapp.SmsMessageBridge; import android.content.Context; import android.content.Intent; import android.os.Bundle; public class OfflineSMSReceiver extends SMSReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println("SMS_RECEIVED"); System.out.println(Utilities.getNow());
[SmsMessageBridge.java]
import android.os.Build; public abstract class SmsMessageBridge { public abstract SmsMessageBridge createFromPdu(byte[] pdu); public abstract long getTimestampMillis(); public abstract String getOriginatingAddress(); public abstract String getMessageBody(); public static final SmsMessageBridge INSTANCE = getBridge(); private static SmsMessageBridge getBridge() { final int sdkVersion = new Integer(Build.VERSION.SDK).intValue(); if(sdkVersion>3) { return new NewSmsMessage(); } else { return new OldSmsMessage(); } } }
[OldSmsMessage.java]
import android.telephony.gsm.SmsMessage;//*NOTE* depreciated in v1.6+ @SuppressWarnings("deprecation") public class OldSmsMessage extends SmsMessageBridge { private SmsMessage myMSG; @Override public SmsMessageBridge createFromPdu(byte[] pdu) { myMSG = SmsMessage.createFromPdu(pdu); return this; } @Override public long getTimestampMillis() { return myMSG.getTimestampMillis(); } @Override public String getOriginatingAddress() { return myMSG.getOriginatingAddress(); } @Override public String getMessageBody() { System.out.println("v1.5"); return myMSG.getMessageBody(); } }
[NewSmsMessage.java]
import android.telephony.SmsMessage; public class NewSmsMessage extends SmsMessageBridge { private SmsMessage myMSG; @Override public SmsMessageBridge createFromPdu(byte[] pdu) { myMSG = SmsMessage.createFromPdu(pdu); return this; } @Override public String getMessageBody() {
Thanks again to CommonsWare.
source share