Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

startActivity() from BroadcastReceiver

I am trying to autostart my nightclock application on charging using the following BroadcastReceiver implemented in the onPause() method:

BroadcastReceiver test = new BroadcastReceiver() {     @Override     public void onReceive(Context context, Intent intent) {         unregisterReceiver(this);         Intent i = new Intent(context, NightClock.class);         i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);         context.startActivity(i);        }            }; registerReceiver(test, new IntentFilter(Intent.ACTION_POWER_CONNECTED)); 

The onReceive() method is fired when the USB-cable is plugged in, but the activity doesn't start. However the log shows this:

I/ActivityManager(   79): Starting activity: Intent { flg=0x10000000 cmp=com.meins.nightclock/.NightClock } 

Any ideas why the log says the activity is started, but nothing happens?

like image 962
Gubbel Avatar asked Oct 03 '10 13:10

Gubbel


People also ask

How do I send data from BroadcastReceiver to activity?

Intent intent = getIntent(); String message = intent. getStringExtra("message"); And then you will use message as you need. If you simply want the ReceiveText activity to show the message as a dialog, declare <activity android:theme="@android:style/Theme.

What is startActivity ()?

Starting activities or services. To start an activity, use the method startActivity(intent) . This method is defined on the Context object which Activity extends. The following code demonstrates how you can start another activity via an intent.

What is the role of the onReceive () method in the BroadcastReceiver?

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.

What is the use of BroadcastReceiver in Android?

Android BroadcastReceiver is a dormant component of android that listens to system-wide broadcast events or intents. When any of these events occur it brings the application into action by either creating a status bar notification or performing a task.


1 Answers

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.

like image 189
Sathish Avatar answered Sep 18 '22 18:09

Sathish