2010-12-17 15 views
8

Quiero comenzar un servicio en un APK.¿Puedo comenzar un servicio sin actividad o sin receptor?

He intentado utilizar de la siguiente manera:

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <service android:name =".TestServcie"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </service> 
    </application> 

¿Alguna idea?
Gracias

+0

Así que lo tomo, ¿no funciona? (¿No porque escribiste mal el Servicio?) ¿Sucede algo? Por cierto, ¿estás planeando CUALQUIER comentario para el usuario de que el servicio comenzó? – EboMike

Respuesta

11

No, no puedes.

Cree una Actividad simple que inicie el servicio y simplemente proporcione algunos comentarios al usuario (para informarles que el servicio ha comenzado, por ejemplo) y configure esa Actividad con el intento PRINCIPAL/LANZADOR.

+3

Alguien elimina esta terrible e inútil respuesta y pone la otra encima. – Arijoon

+0

@Arijoon: ¿Cómo propone que se inicie el 'Servicio'? Desde Android v3.x en adelante, no es posible iniciar ningún componente de la aplicación a menos que el usuario haya iniciado manualmente la aplicación desde el iniciador, lo que significa que debe iniciar 'Activity'. Lo más importante, sería un mal diseño para iniciar los componentes de la aplicación sin el permiso de los usuarios. Además, la otra respuesta puede ser correcta PERO fallará a menos que el usuario haya iniciado una "Actividad" (lo que indica que dan su permiso). También fallará si la aplicación se detiene manualmente y no se reinicia manualmente de nuevo o si la aplicación está instalada en la tarjeta SD. – Squonk

+1

Solo se requiere ejecutar una Actividad ** una vez ** después de la instalación. A partir de entonces puede iniciar el servicio en el arranque. La primera parte de su respuesta es correcta, sin embargo, el resto no es útil. Muchos servicios como Viber se ejecutan al arrancar en segundo plano sin preguntar al usuario. – Arijoon

29

puede escribir BroadcastReceiver y ejecutar el servicio después de la intención de venir. Por ejemplo, después del dispositivo de arranque u otro intento que necesita.

<receiver android:name=".StartupReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED"/> 
    <category android:name="android.intent.category.HOME"/> 
    </intent-filter> 
</receiver> 
+0

Creo que esta respuesta es la correcta. Describe cómo iniciar un servicio sin acción por parte del usuario y creo que eso es lo que el autor estaba buscando. – Undo

+0

Tanto como yo Google, parece que el usuario realmente tiene que ejecutar la aplicación para que se registren los receptores. – Pijusn

+1

En este caso, los receptores se registran a través de AndroidManifest.xml.En otras palabras, se registran cuando el usuario instala la aplicación. – Qlimax

Cuestiones relacionadas