ajay
ajay

Reputation: 53

Boot Complete Broadcast not Working

I am trying to start an activity when am restart my phone then its open app or show me toast when booting is complete

 class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

    if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) {
        Intent serviceIntent = new Intent(context, MyIntentService.class);
        context.startService(serviceIntent);
    }
}

}

this is my Broadcaste receiver Code

 class MyIntentService extends Service {
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
    // do something when the service is created
}

}

This is my service Code.

Manifest

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">


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

    <service android:name=".MyIntentService"></service>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

am trying lots of diffrent code but no one work for me so can anyone help me to correct this code

Upvotes: 1

Views: 1330

Answers (2)

Rajesh
Rajesh

Reputation: 2618

Add this in BroadcastReceiver class

public void onReceive(Context context, Intent intent) {
   if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
        Intent pushIntent = new Intent(context, SyncData.class);
        context.startService(pushIntent);
        Log.e("BroadCast Received", "ON BOOT COMPLETE");
   }
}

and remove this two lines android:enabled="true" android:exported="false"

Upvotes: 0

David Wasser
David Wasser

Reputation: 95636

Your BroadcastReceiver will never get called because you have this in the manifest entry for it:

    android:exported="false"

Remove that.

NOTE: You also need to make sure that your app is started at least once manually after installing it on the phone. Otherwise your BroadcastReceiver will NOT get the BOOT_COMPLETE Intent.

NOTE: Also, using Toast as a debugging aid isn't a very good idea. You should write messages to the logcat and use that to determine if your Service is getting started, etc. Toast is not reliable as a debugging tool.

Upvotes: 2

Related Questions