Akshay Borgave
Akshay Borgave

Reputation: 112

service force close on boot up

i am trying to start the service at the start up, but the service getting forced closed

the code for Broadcast receiver is as follows

package com.android.locationservice;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyLocationBroadcastReceiver extends BroadcastReceiver{
    public void onReceive(Context context, Intent intent) {
        Intent startServiceIntent = new Intent();
        startServiceIntent.setAction("com.android.locationservice.LocatonTraceService");
        context.startActivity(startServiceIntent);
    }
}

and the manifest look like this

<receiver android:name="com.android.locationservice.MyLocationBroadcastReceiver">  
    <intent-filter>  
        <action android:name="android.intent.action.BOOT_COMPLETED" />  
    </intent-filter>  
</receiver> 


<service android:name=".LocationTraceService">
    <intent-filter>
        <action android:name="com.android.locationservice.LocationTraceService" />
    </intent-filter>    
</service>

</application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

and service implemented like this

    package com.android.locationservice;

    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
    import android.widget.TextView;
    import android.widget.Toast;

    public class LocationTraceService extends Service
    {

   @Override
   public void onCreate() {
       super.onCreate();
       Toast.makeText(this, "Service created...", Toast.LENGTH_LONG).show();      
      // Log.i(tag, "Service created...");
      // new LocationActivity("service created...");

   }




@Override
   public void onStart(Intent intent, int startId) {      
       super.onStart(intent, startId);  

       Toast.makeText(this, "Service started...", Toast.LENGTH_LONG).show();
       //new LocationActivity("service started...");
   }

   @Override
   public int onStartCommand(Intent intent, int flags, int startId)
   {


       return super.onStartCommand(intent, flags, startId);
   }
   @Override
   public void onDestroy() {
       super.onDestroy();
       Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show();
       //new LocationActivity("service destroyed...");
   }

   @Override
   public IBinder onBind(Intent intent) {
       return null;
   }

}

The logcat is

 08-25 07:33:39.021: E/AndroidRuntime(248): FATAL EXCEPTION: main
 08-25 07:33:39.021: E/AndroidRuntime(248): java.lang.RuntimeException: Unable to start                                                     context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
 08-25 07:33:39.021: E/AndroidRuntime(248):     at    android.app.ActivityThread.handleReceiver(ActivityThread.java:2821)
 08-25 07:33:39.021: E/AndroidRuntime(248):     at android.app.ActivityThread.access$3200(ActivityThread.java:125)
 08-25 07:33:39.021: E/AndroidRuntime(248):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)

please help me i am new for android ,thanks in advance.

Upvotes: 0

Views: 321

Answers (2)

ruX
ruX

Reputation: 7472

Why are you start service activity, not service? Correct:

public class MyLocationBroadcastReceiver extends BroadcastReceiver{
    public void onReceive(Context context, Intent intent) {
        startService(new Intent(context, LocatonTraceService.class));
    }
}

Upvotes: 2

Lucifer
Lucifer

Reputation: 29632

I think you are missing GPS Permission in AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_GPS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

Upvotes: 0

Related Questions