Reputation: 355
I am creating an SMS app, I am stuck in sms receiver, Here is my sms receiver codes
public class SmsReceiver extends BroadcastReceiver {
public static final String SMS_BUNDLE = "pdus";
@Override
public void onReceive(Context context, Intent intent) {
Bundle intentExtras = intent.getExtras();
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
String smsMessageStr = "";
for (int i = 0; i < sms.length; ++i) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
String smsBody = smsMessage.getMessageBody().toString();
String address = smsMessage.getOriginatingAddress();
smsMessageStr += "SMS From: " + address + "\n";
smsMessageStr += smsBody + "\n";
}
Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show();
}
}
}
It works fine making good toast, but it doesnt update inbox, how to update inbox? ( context://inbox)
Upvotes: 0
Views: 771
Reputation: 355
finally I solved it, here is how its done, hope it helps someone
adding of contentValues and passing it via context.getContentResolver
public void onReceive(Context context, Intent intent) {
Bundle intentExtras = intent.getExtras();
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
ContentResolver contentResolver = context.getContentResolver();
String smsMessageStr = "";
for (int i = 0; i < sms.length; ++i) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
String smsBody = smsMessage.getMessageBody().toString();
String address = smsMessage.getOriginatingAddress();
smsMessageStr += "SMS From: " + address + "\n";
smsMessageStr += smsBody + "\n";
/*creating the content values to pass to inbox*/
ContentValues values = new ContentValues();
values.put("address",address);
values.put("body",smsBody);
Uri uriSMSURI = Uri.parse("content://sms/inbox");
//contentResolver.insert(uriSMSURI, values);
/*push to inbo*/
context.getContentResolver().insert(uriSMSURI,values);
}
Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show();
}
}
Upvotes: 2
Reputation: 358
add a receiver in your inbox Activity
class UpdateInboxBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
updateInbox(); // custom implementation for updating inbox adapter
}
}
then in your receiver send broadcast to your inbox activty
public void sendBroadcast(String message){
Intent broadCastIntent = new Intent();
broadCastIntent.putExtra("message", message);
broadCastIntent.setAction("updateInbox");
this.sendBroadcast(broadCastIntent);
stopSelf();
}
public static final String SMS_BUNDLE = "pdus";
@Override
public void onReceive(Context context, Intent intent) {
Bundle intentExtras = intent.getExtras();
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
String smsMessageStr = "";
for (int i = 0; i < sms.length; ++i) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
String smsBody = smsMessage.getMessageBody().toString();
String address = smsMessage.getOriginatingAddress();
smsMessageStr += "SMS From: " + address + "\n";
smsMessageStr += smsBody + "\n";
}
Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show();
sendBroadcast(smsMessageStr);
}
}
}
Upvotes: -1