2011-05-19 32 views
5

He leído probablemente 100 preguntas y respuestas sobre este tema, pero parece que no funciona. Estoy tratando de iniciar un Service desde un Activity. Mi archivo manifiesto parece estar bien, la forma en que estoy comenzando el Service también parece ser correcta. El siguiente error está apareciendo en LogCat:No se puede iniciar el servicio Intención

ActivityManager(1296): Unable to start service Intent 
{ cmp=com.exercise.AndroidClient/com.client.Communication }: not found 

Estoy intentando iniciar el servicio llamando a esto en mi Activity:

startService(new Intent(getApplicationContext(), Communication.class)); 

la Service es la siguiente:

public class Communication extends Service { 
    public Communication() { 
     super(); 
    } 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Log.i("Service", "Created service"); 
    } 
    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Log.i("Service", "onStartCommand called"); 
     return START_STICKY; 
    } 
    @Override 
    public IBinder onBind(Intent arg0) { 
     return null; 
    } 
} 

La entrada en mi archivo de manifiesto es:

<?xml version="1.0" encoding="utf-8" ?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.exercise.AndroidClient" android:versionCode="1" 
    android:versionName="1.0"> 

    <application android:icon="@drawable/sms" android:label="@string/app_name" > 

     <activity> ... </activity> 

     <service android:enabled="true" android:name=".Communication" /> 

    </application> 
</manifest> 

Cualquier consejo es muy apreciado.

+0

Este problema se solucionó cambiando 'StartService (nueva Intención (getApplicationContext(), Communication.class));' a 'StartService (nueva intención (getApplicationContext(), com.client.Communication.class)); ' y también hacer el mismo cambio en el archivo de manifiesto. Pensé que dado que todos los archivos estaban en el mismo paquete, que esto estaría bien ... supongo que no. – Shaun

Respuesta

4

¿Dónde está la clase de comunicación?

En el manifiesto se declara un servicio con android:name=".Communication", esto significa que su clase de servicio debe estar ubicado en com.exercise.AndroidClient.Communication

Compruebe que los paquetes son correctos. Tenga en cuenta que el "." (punto) se refiere a la raíz de su paquete (es decir, el paquete declarado en el manifiesto). Así, por ejemplo, si el paquete es com.exercise.AndroidClient y su clase de servicio se encuentra bajo com.exercise.AndroidClient.services.Communication tiene que declarar el servicio como este:

<service android:enabled="true" android:name=".services.Communication" /> 

O especificar el paquete completo:

<service android:enabled="true" android:name="com.exercise.AndroidClient.services.Communication" /> 
+0

Gracias! Me las he arreglado para resolver esto hace un rato. Sin embargo, no puedo responder mi propia pregunta dentro de las 8 horas posteriores a la publicación. – Shaun

0

que tenían la misma error y la causa fue que el servicio no estaba definido en AndroidManifest.xml.

+0

El mismo problema aquí –

0

Además, si su servicio existe en un proyecto de biblioteca al que se refiere, verifique su archivo project.properties.

hay que añadir esta línea:

manifestmerger.enabled=true 
Cuestiones relacionadas