Reputation: 4686
Wondering how I would go about creating an SMS Broadcast Receiver without using the Manifest file. So for instance, this is my current manifest file line:
<receiver android:name="com.paradopolis.randomnotifications.SMSListener">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
and it's working fine, but I'd like to be able to remove the line and register my broadcast receiver within my service like:
registerReceiver(new SMSListener() , [?????]);
but I can not find the Intent filter to use, since SMS_RECEIVED is part of the Telephony package. So the question is: What is that intent filter?
Upvotes: 1
Views: 3728
Reputation: 1940
Create IntentFilter
in your java file, then registerReceiver(Receiver, IntentFilter)
The action will be android.provider.Telephony.SMS_RECEIVED
as a string.
IntentFilter i = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(new SMSListener() , i);
Upvotes: 7
Reputation: 2702
mSmsReceiver = new SMSreceiver();
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(SMS_RECEIVE_ACTION); // SMS
filter.addAction(WAP_PUSH_RECEIVED_ACTION); // MMS
this.registerReceiver(mSmsReceiver, filter);
class SMSreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (!getSMSBlockEnable()) {
return;
}
if (TextUtils.equals(intent.getAction(), SMS_RECEIVE_ACTION)) {
Bundle bundle = intent.getExtras();
if (bundle == null) {
return;
}
Object[] messages = (Object[])bundle.get("pdus");
SmsMessage smsHeader = SmsMessage.createFromPdu((byte[])messages[0]);
if (smsHeader != null) {
mReceiveNumber = smsHeader.getOriginatingAddress();
if(TextUtils.isEmpty(mReceiveNumber)) {
mReceiveNumber = INVALID_NUMBER;
}
}
for (Object message : messages) {
SmsMessage sms = SmsMessage.createFromPdu((byte[])message);
if (sms != null) {
body.append(sms.getDisplayMessageBody());
}
}
mReceiveBody = body.toString();
}
}
}
Upvotes: 0