I want to start an activity in my onReceive()
method.
package com.splashscreenactivity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.widget.Toast; public class SMSReceiver extends BroadcastReceiver { public static String trigger_message = ""; @Override public void onReceive(Context context, Intent intent) { // ---get the SMS message passed in--- Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String str = ""; if (bundle != null) { // ---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]); str += "SMS from " + msgs[i].getOriginatingAddress(); str += " :"; trigger_message = msgs[i].getMessageBody().toString(); str += trigger_message; str += "\n"; } // ---display the new SMS message--- Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); if (trigger_message.equals("dx")) { Toast.makeText(context, "I am triggered", Toast.LENGTH_LONG) .show(); // ///////////////////////// // i want to start here // //////////////////////// // MainScreenActivity.trigger="Now"; // Intent i = new Intent(context,GPS.class); // i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // context.startActivity(i); } else { Toast.makeText(context, "I am not triggered, Bbyz!!!", Toast.LENGTH_LONG).show(); } } } }
here is GPS.class
package com.splashscreenactivity; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.telephony.SmsManager; import android.telephony.SmsMessage; import android.widget.TextView; import android.widget.Toast; public class GPS extends Activity implements LocationListener { TextView latitude, logitude; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gps); LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, this); Toast.makeText(this, "i m started", Toast.LENGTH_LONG); // latitude = (TextView)findViewById(R.id.txtLat); // logitude = (TextView)findViewById(R.id.txtLongi); // latitude.setText("Loading..."); // logitude.setText("Loading..."); } String LATTITUDE; String LOGITUDE; @Override public void onLocationChanged(Location location) { double lat = location.getLatitude(); double lag = location.getLongitude(); LATTITUDE = Double.toString(lat); LOGITUDE = Double.toString(lag); // latitude.setText(LATTITUDE); // logitude.setText(LOGITUDE); // SmsManager sm = SmsManager.getDefault(); // // here is where the destination of the text should go // String number = "5556"; // sm.sendTextMessage(number, null, // "latitude="+latitude.getText()+"\nlongitude="+logitude.getText(), // null, null); } @Override public void onProviderDisabled(String arg0) { } @Override public void onProviderEnabled(String arg0) { } @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { } // /** Register for the updates when Activity is in foreground */ // @Override // protected void onResume() // { // super.onResume(); // lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, // this); // } // // /** Stop the updates when Activity is paused */ // @Override // protected void onPause() { // super.onPause(); // lm.removeUpdates(this); // } }
Retrieve the current result extra data, as set by the previous receiver. This can be called by an application in onReceive(Context, Intent) to allow it to keep the broadcast active after returning from that function.
A broadcast receiver will always get notified of a broadcast, regardless of the status of your application. It doesn't matter if your application is currently running, in the background or not running at all.
1) I have an Activity. This Activity starts a service, which in turn creates and registers a BroadcastReceiver. 2) I have an Activity. This Activity creates and registers a BroadcastReceiver.
Step 1. Open your project where you want to implement this. Step 2. Open your BroadcastReceiver class from where you pass data to activity inside your onReceive() you need to start intent and pass data inside intent and start sendBroadcast() as shown bellow.
You have context passed as parameter to onRecieve() method, so just use:
@Override public void onReceive(Context context, Intent intent) { //start activity Intent i = new Intent(); i.setClassName("com.test", "com.test.MainActivity"); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); }
It works, of course you have to change package and activity class name to your own.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With