2014-10-17 2 views
0

Я уже давно это знаю, и я не знаю, почему он не работает. Я пытаюсь запустить службу, когда устройство запускается, используя BroadcastReceiver. Когда устройство запускается, оно падает и спрашивает, зарегистрирована ли активность в AndroidManifest.BroadcastReceiver падает при загрузке при попытке начать простое обслуживание

Я использую эмулятор Genymotion и попробовал удалить приложение, а также очистить проект в Eclipse. Я также попытался добавить полное имя к андроиду: имя «com.gordon.status.service.StartBackgroundSyncService», и это тоже не работает.

BroadcastReceiver:

public class AutostartReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Intent i = new Intent(context, StartBackgroundSyncService.class);  
     context.startService(i); 
    } 
} 

манифеста:

<service 
     android:name="service.StartBackgroundSyncService" 
     android:enabled="true" 
     android:exported="false"/> 
    <service   
     android:name="service.LinkedInBackgroundService" 
     android:enabled="true"/> 
    <receiver android:name="receiver.AutostartReceiver" 
       android:exported="false" 
       android:enabled="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> <!-- For some HTC devices --> 
      <action android:name="android.intent.action.BOOT_COMPLETED"></action> 
     </intent-filter> 
    </receiver> 

Сервис (он должен отображать Привет, когда устройство начинает вверх)

public class StartBackgroundSyncService extends Service 
{ 
    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 

     System.out.println("HELLO========================================================="); 
     System.out.println("=============================================================="); 
    } 

    public int startCommand(Intent intent, int flags, int startId) 
    { 
     return super.onStartCommand(intent, flags, startId); 
    } 

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

Logcat:

10-17 20:48:07.438: E/AndroidRuntime(1147): java.lang.RuntimeException: Unable to start receiver receiver.AutostartReceiver: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.gordon.status/service.StartBackgroundSyncService}; have you declared this activity in your AndroidManifest.xml? 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2383) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.app.ActivityThread.access$1500(ActivityThread.java:141) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.os.Looper.loop(Looper.java:137) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at java.lang.reflect.Method.invoke(Method.java:511) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at dalvik.system.NativeStart.main(Native Method) 
10-17 20:48:07.438: E/AndroidRuntime(1147): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.gordon.status/service.StartBackgroundSyncService}; have you declared this activity in your AndroidManifest.xml? 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.app.ContextImpl.startActivity(ContextImpl.java:957) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.app.ContextImpl.startActivity(ContextImpl.java:939) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.content.ContextWrapper.startActivity(ContextWrapper.java:284) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.content.ContextWrapper.startActivity(ContextWrapper.java:284) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at receiver.AutostartReceiver.onReceive(AutostartReceiver.java:16) 
10-17 20:48:07.438: E/AndroidRuntime(1147):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2376) 

ответ

0

Где-то не в коде, который у вас здесь, вы звоните startActivity() на Intent, указывая на ваш StartBackgroundSyncService. Поскольку StartBackgroundSyncService не является активным, он не работает. Найдите, где вы звоните startActivity() на таком Intent и измените его, чтобы указать на фактическую активность в вашем приложении.

Смежные вопросы