Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android BroadcastReceiver, auto run service after reboot of device

Hello i am writing an application, which is when the phone reboot, the service will auto start instead of click on the application.

Here is my code for

BootCompleteReceiver.java

package com.example.newbootservice;  import android.content.BroadcastReceiver;   import android.content.Context;   import android.content.Intent;      public class BootCompleteReceiver extends BroadcastReceiver {         @Override       public void onReceive(Context context, Intent intent) {            Intent service = new Intent(context, MsgPushService.class);           context.startService(service);         }    } 

MsgPushService.java

package com.example.newbootservice;  import android.app.Service;   import android.content.Intent;   import android.os.IBinder;    import android.widget.Toast;  public class MsgPushService extends Service {         @Override       public void onCreate() {           super.onCreate();         }        @Override       public int onStartCommand(Intent intent, int flags, int startId) {            Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();         return Service.START_STICKY;       }        @Override     public void onDestroy() {          super.onDestroy();         Toast.makeText(this, "Service Destroy", Toast.LENGTH_LONG).show();     }      @Override       public IBinder onBind(Intent arg0) {           return null;       }   }  

MainActivity.java (not sure whether i need this)

package com.example.newbootservice;  import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu;  public class MainActivity extends Activity {      @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);          startService(new Intent(getBaseContext(), MsgPushService.class));     }      @Override     public boolean onCreateOptionsMenu(Menu menu) {         getMenuInflater().inflate(R.menu.activity_main, menu);         return true;     } } 

Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.example.newbootservice"     android:versionCode="1"     android:versionName="1.0" >      <uses-sdk         android:minSdkVersion="8"         android:targetSdkVersion="15" />      <application         android:icon="@drawable/ic_launcher"         android:label="@string/app_name"         android:theme="@style/AppTheme" >          <service android:name=".MsgPushService"/>          <receiver android:name=".BootCompleteReceiver">               <intent-filter>                      <action android:name="android.intent.action.BOOT_COMPLETED"/>                   <category android:name="android.intent.category.DEFAULT" />               </intent-filter>           </receiver>          <activity             android:name=".MainActivity"             android:label="@string/title_activity_main" >             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                  <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>     </application> </manifest> 

I want the service to be started automatically after reboot instead of starting it manually.

like image 548
BangBoat Avatar asked Jan 17 '13 17:01

BangBoat


People also ask

How do I turn off BroadcastReceiver on Android?

To stop receiving broadcasts, call unregisterReceiver(android. content. BroadcastReceiver) . Be sure to unregister the receiver when you no longer need it or the context is no longer valid.

What is the limit of BroadcastReceiver in Android?

As a general rule, broadcast receivers are allowed to run for up to 10 seconds before they system will consider them non-responsive and ANR the app.

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.

Can broadcast receiver run in background?

If you want a background receiver, you need to register it inside the AndroidManifest (with intent filter), add an IntentService and start it when you receive a broadcast in the receiver.


1 Answers

First do this

1) In your <manifest> element:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
like image 109
Dixit Patel Avatar answered Sep 19 '22 10:09

Dixit Patel