服务强制关闭在开机

问题描述:

我试图启动该服务在启动,但服务越来越被迫关闭服务强制关闭在开机

的广播接收器的代码如下

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); 
    } 
} 

和清单看这样

<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" /> 

和服务中实现这样

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; 
    } 

} 

的logcat的是

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) 

请帮助我,我事先是新的Android,谢谢。

+0

发布崩溃日志 –

我认为你缺少GPS权限在AndroidManifest.xml

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

你为什么要启动服务活动,而不是服务? 正确:

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