not - nested exception is java lang noclassdeffounderror
Android: no se puede iniciar la intención de servicio: ¿no se encuentra? (8)
Lo sé, no soy el primero en tratar este problema, pero probé muchas soluciones, he encontrado y nadie funciona ... tal vez puedas encontrar el error.
El error (también se produjo sin .class y con /.Client dependiendo de otras configuraciones)
12-02 16: 40: 15.359: W / ActivityManager (74): No se puede iniciar la Intención del servicio {act = com.android.fh.EnOceanApp.Client.class}: no encontrado
En el manifiesto, esto se incluye en la aplicación, fuera de las actividades (se probó también en las actividades y con ".Client"
El código en onCreate ()
startService(new Intent(this, Client.class));
o
startService(new Intent(this.getApplicationContext(), Client.class));
o
Intent intent=new Intent("com.android.fh.EnOceanApp.Client.class");
this.startService(intent);
o
Intent intent=new Intent("com.android.fh.EnOceanApp.Client");
this.startService(intent);
Y ahora, ya no tengo una Idea ... com.android.fh.EnOceanApp es el paquete, Client.java la clase de servicio en este paquete
y lo manifiesto me olvidé:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".EnOceanAppActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ListView"
android:label="List View">
</activity>
<activity android:name=".GraphView"
android:label="Graph View">
</activity>
<service
android:name=".Client"></service> //with and without ., of course without this comment
</application>
A pesar de TODAS las respuestas en esta publicación y en muchas otras relacionadas No se pudo iniciar la Intención del servicio: no se encontró No se pudo iniciar la Intención del Servicio , todavía tuve dificultades y me llevó algo de tiempo ponerlo en marcha. Mi situación fue un poco más complicada, ya que estoy intentando iniciar un servicio en una aplicación DIFERENTE con la que lo llamo. Lo descubrí y aquí están TODOS los detalles, junto con un código de bono.
Actividad principal de la intención de llamada (o donde sea)
Intent intent=new Intent("com.example.core.MusicService.1234");
//Or Intent intent=new Intent("com.example.core.MusicService.TOGGLE_PLAYBACK");
PendingIntent pendingIntent = PendingIntent.getService(this, 99, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Manifiesto: de servicio (Etiqueta de servicio dentro de la etiqueta de aplicación) Es
<service android:name="com.example.core.MusicService">
<intent-filter>
<action android:name="com.example.core.MusicService1234"></action>
</intent-filter>
<intent-filter>
<action android:name="com.example.core.MusicService.TOGGLE_PLAYBACK"></action>
</intent-filter>
</service>
MusicService.java
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(intent != null){
if(intent.getAction() != null){
if(intent.getAction().contentEquals("com.example.core.MusicService.TOGGLE_PLAYBACK")){
//Do work here
}
}
}
}
Notas
- El servicio NO necesita ser iniciado, esta intención lo iniciará
- "com.example.core.MusicService1234" y "com.example.core.MusicService.TOGGLE_PLAYBACK" puede ser lo que quieras que sea, pero obviamente debe coincidir con el filtro de intención en el manifiesto de servicio con la intención de llamada. Puede poner varios de estos para que pueda realizar diferentes acciones cuando comience su servicio, dependiendo del valor de su intención
- 99 puede ser lo que quieras, pero debe ser único si estás usando notificaciones
- No estoy seguro de que sea posible llamar a un servicio en una aplicación diferente (como esta) sin usar el filtro de intención; si lo es, alguien nos ilumine. Lo intenté y no funciona.
Crédito a: la información acumulada de todos los mensajes :)
A veces necesitará calificar completamente el nombre de su clase en el manifiesto, en lugar de usar la forma corta (.classname). He visto eso cuando usé clases de un paquete diferente, pero quizás ayudaría aquí ya que la intención del servicio puede ir fuera de la aplicación.
Bueno, en mi caso tuve que limpiar el proyecto. A veces sucede cuando ha creado una nueva clase de Java para el servicio en su paquete / proyecto, pero no creó / limpió las contraseñas del proyecto. En mi caso, solo tuve que limpiar el proyecto para deshacerme del error.
Cometí el error tonto de agregar la etiqueta a un separado en el manifiesto.
En ese caso, la aplicación actual no pudo encontrar el servicio definido.
Espero que te saltes ese error :)
Gracias.
Entonces ... solo para ayudar a otros o no:
Hice un nuevo proyecto, copié las fuentes y traté de ejecutarlo: el servicio se encontró ahora. ¿Cuál fue la diferencia, o en otras palabras: qué pienso, podría dar problemas: el nombre del paquete largo o el principio con com.android? . . En el nuevo proyecto acabo de elegir com.enocean.
Es un error estúpido de Android
Esto no funcionará
<service
android:name=".classname"/>
Pero esto funcionará, tienen etiqueta de cierre separada.
<service
android:name=".classname"></service>
Gracias al usuario njzk2 por dejarme notar lo que estaba sucediendo.
He tenido el mismo problema. Parece que el sistema operativo Android no puede encontrar la clase de servicio que ha solicitado si no se ha registrado anteriormente en el archivo de manifiesto de su proyecto.
Recuerda que un servicio es como una actividad pero sin interfaz gráfica. Esto significa que los servicios deben registrarse antes de poder utilizarlos.
Así es como se registra el servicio en su proyecto de Android:
<application>
<!-- your code -->
<activity>
<!-- your code -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.your.own.service.class"></service>
</application>
Solo recuerde que la clase YourService debe extenderse desde el servicio, si no su clase no será un servicio.
public class YourService extends Service{}
Si alguien ve esto y tiene el mismo problema que yo, fue porque seguí una guía y usé context.startService()
lugar de context.startActivity()