Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Using CommonsWare's example, I was able to create this (which works):</p> <p>[manifest settings]</p> <p>1.Set the target SDK to 4 (or higher) (Android 1.6+)</p> <p>2.Set the min SDK to 3 (Android 1.5)</p> <p>[OfflineSMSReceiver.java]</p> <pre><code>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()); //---get the SMS message passed in--- Bundle bundle = intent.getExtras(); SmsMessageBridge[] msgs = null; Date date; long timeStamp; String time; String str = ""; if (bundle != null) { //---retrieve the SMS message received--- Object[] pdus = (Object[]) bundle.get("pdus"); msgs = new SmsMessageBridge[pdus.length]; for (int i=0; i&lt;msgs.length; i++){ msgs[i] = SmsMessageBridge.INSTANCE.createFromPdu((byte[])pdus[i]); timeStamp = msgs[i].getTimestampMillis(); date = new Date(timeStamp); time = this.getTime(date.getHours(),date.getMinutes(),date.getSeconds()); str += "SMS from " + msgs[i].getOriginatingAddress(); str += " :"; str += msgs[i].getMessageBody().toString(); str += "\n"; str += "TIME: "+time+"\t"+this.getNowDate(); } System.out.println(str); } } } </code></pre> <p>[SmsMessageBridge.java]</p> <pre><code>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&gt;3) { return new NewSmsMessage(); } else { return new OldSmsMessage(); } } } </code></pre> <p>[OldSmsMessage.java]</p> <pre><code>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(); } } </code></pre> <p>[NewSmsMessage.java]</p> <pre><code>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() { //System.out.println("v1.6+"); return myMSG.getMessageBody(); } @Override public String getOriginatingAddress() { return myMSG.getOriginatingAddress(); } @Override public long getTimestampMillis() { return myMSG.getTimestampMillis(); } } </code></pre> <p>Thanks again to CommonsWare.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload