5
0
mirror of https://github.com/cwinfo/envayasms.git synced 2025-04-16 13:08:20 +00:00
envayasms/src/org/envaya/kalsms/receiver/SMSReceiver.java

68 lines
2.0 KiB
Java
Executable File

package org.envaya.kalsms.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import java.util.ArrayList;
import java.util.List;
import org.envaya.kalsms.App;
import org.envaya.kalsms.IncomingMessage;
import org.envaya.kalsms.IncomingSms;
public class SmsReceiver extends BroadcastReceiver {
private App app;
@Override
// source: http://www.devx.com/wireless/Article/39495/1954
public void onReceive(Context context, Intent intent) {
app = (App) context.getApplicationContext();
if (!app.isEnabled())
{
return;
}
try {
boolean hasUnhandledMessage = false;
for (IncomingMessage sms : getMessagesFromIntent(intent)) {
if (sms.isForwardable())
{
app.forwardToServer(sms);
}
else
{
app.log("Ignoring incoming SMS from " + sms.getFrom());
hasUnhandledMessage = true;
}
}
if (!hasUnhandledMessage && !app.getKeepInInbox())
{
this.abortBroadcast();
}
} catch (Throwable ex) {
app.logError("Unexpected error in SmsReceiver", ex, true);
}
}
// from http://github.com/dimagi/rapidandroid
// source: http://www.devx.com/wireless/Article/39495/1954
private List<IncomingMessage> getMessagesFromIntent(Intent intent)
{
Bundle bundle = intent.getExtras();
List<IncomingMessage> messages = new ArrayList<IncomingMessage>();
for (Object pdu : (Object[]) bundle.get("pdus"))
{
SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdu);
messages.add(new IncomingSms(app, sms));
}
return messages;
}
}