Here is my source code and it keeps force closing everytime I run it...
public class MainActivity extends Activity {
private static String content;
p
The force close is likely happening because you are managing the UI from within your broadcast receiver. There's a 10-second limit on a BR's onReceive before it is forced closed.
To solve, use an Activity component to generate your Toast.
You need to move your receiver outside the onCreate. something like -
public class MainActivity extends Activity {
private static String content;
private static String phone;
private String number;
private String message;
private BroadcastReceiver receiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null)
{
number = "";
message = "";
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
number = msgs[i].getOriginatingAddress();
message = msgs[i].getMessageBody();
}
//---display the new SMS message---
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
SendMe();
}
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter();
filter.addAction(YOUR_SMS_ACTION);
this.registerReceiver(this.receiver, filter);
setContentView(R.layout.main);
}
public void SendMe(){
PendingIntent pi = PendingIntent.getActivity(this, 0,
new Intent(this, MainActivity.class), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(number, null, message, pi, null);
}
}
I am a little confused here. It seems that you want to register aBroadcastReceiver for the "SMS_RECEIVED" IntentFilter but the filter has not been declared anywhere in the code as far as I can see.
Try replacing the null at the end of registerReceiver {} to new IntentFilter("SMS_RECEIVED")); to see if it works. Maybe its the reason why you are getting a null pointer exception.
i.e. }
}
}, null);
to }
}
}, new IntentFilter("SMS_RECEIVED"));