Hi I’ve been having an issue with Broadcast Receivers and passing information to another activity. I’m trying to create an application that will capture incoming SMS messages, look for a website in the text, then pop up an Alert Dialog box asking if the user wants to go to the website.
public class TextReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent)
{
// .. other code that
// sets received SMS into message
Toast toast = Toast.makeText(context,
"Received Text: " + message.getMessageBody(), Toast.LENGTH_LONG);
toast.show();
}
So that code works fine, receive a text it pops up a toast with the message. The toast is useless but it shows the receiver works. But I want to communicate with an activity to show an Alert Dialog and start up a webView. I already programmed the code that will take a string search for the website and open the webView. Is it possible to get the string from the broadcast receiver and do something like this?:
public class ReceiveText extends Activity{
public void onCreate(Bundle savedInstanceState) {
// Somehow pass the string from the receiver into this activity,
//stored in variable messages
findOpen(messages);
// is that possible?
}
public class findOpen(string messages){
// do stuff ... open alert...open site if OK
}
So basically I just want to pass a string from a Broadcast Receiver to another activity that will use that string. The rest of the code is basically in place all I need is that string… I’m new to this and Java and any help would be much appreciated. Thanks
If you have your activity named
ReceiveText, then in yourBroadcastReceiver, you should do the following:Then, in your activity, you will need to getExtra as so:
And then you will use
messageas you need.If you simply want the
ReceiveTextactivity to show the message as a dialog, declare<activity android:theme="@android:style/Theme.Dialog" />in your manifest forReceiveTextand then set the message to a textview in the activity.EDIT: This restarts your activity. this answer is likely a better solution for most people.