I want to send a HTTP POST request to a URL on OnReceive event of BroadcastReceiver, but I'm getting the exception NetworkOnMainThreadException
, How to run a thread on OnReceive event.
public void onReceive(Context context, Intent intent) {
final Bundle bundle = intent.getExtras();
try
{
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentmessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phonenumber = currentmessage.getDisplayOriginatingAddress();
String senderNum = phonenumber;
String message = currentmessage.getDisplayMessageBody();
String msg = message.substring(5);
Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + msg);
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + msg, duration);
toast.show();
sendhttprequest("http://example.com/product", "rl", "12345678");
}
}
}
catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" +e);
}
}
sendhttprequest is the function which is used to call http post request.
Please help.