Monday, February 6, 2012

Start Activity from Broadcast Recevier


Some time we need to start an Activity from Broadcast Receiver..
how can we achieve this i am going to write step by step.

So lets create a small App to do this things 

-------------------------------------------
App Name: BReceiver2Activity
Package Name: com.rdc
Android SDK: Android SDK 2.2 / API 8
-------------------------------------------

MyReceiver.java
package com.rdc;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class MyReceiver extends BroadcastReceiver {

 @Override
 public void onReceive(Context context, Intent intent) {
  
  Toast.makeText(context, "MyReceiver Started", 
    Toast.LENGTH_SHORT).show();
  Log.v("Info Message", "in Broadcast receiver");
  Intent myIntent=new Intent(context,MyActivity.class); 
  myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  context.startActivity(myIntent);
 }

}



MyActivity.java
package com.rdc;

import android.app.Activity;
import android.os.Bundle;

public class MyActivity extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

 }
}


main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:weightSum="1">
 <TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/hello"
  android:layout_weight="0.14" />
</LinearLayout>


AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
 xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.rdc"
 android:versionCode="1"
 android:versionName="1.0">
 <uses-sdk android:minSdkVersion="8" />

 <application
  android:icon="@drawable/icon"
  android:label="@string/app_name">

  <activity
   android:enabled="true"
   android:name=".MyActivity">
   <intent-filter>
    <action android:name="com.rdc.MyActivity">
    </action>
   </intent-filter>
  </activity>

  <receiver
    android:enabled="true"
    android:name=".MyReceiver">
    <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
  </receiver>

 </application>
</manifest>

Now Reboot Emulator, Activity will appear on start-up.

You can download source code here: BReceiver2Activity

cheers!!

I'd love to hear your thoughts!!

3 comments:

  1. RDC thank you big time.:))
    I was trying for a few weeks to start my GPS based application on phone boot, but without success. I red so many examples but with no luck, until I came to this page.
    Thanks once again,
    If you ever come to Bosnia, free drinks on me :)
    Darko

    ReplyDelete
    Replies
    1. hehe.. my pleasure :)

      well i'll sure visit Bosnia, to perform live there.

      Delete
  2. Its very helpful to us.
    Is it possible to show Alert without any Activity.Am try to develop one project incoming sms having the specific word show Alert with call and sms like.That.Please Reply me .Thanks Advance.

    ReplyDelete