studio putextra intents intent example desde change boton activity abrir android service android-intent intentfilter

putextra - intents android



No se puede iniciar el Servicio Intento (6)

1) verificar si la declaración de servicio en el manifiesto está anidada en la etiqueta de la aplicación

<application> <service android:name="" /> </application>

2) comprueba si tu service.java está en el mismo paquete o paquete diff que la actividad

<application> <!-- service.java exists in diff package --> <service android:name="com.package.helper.service" /> </application>

<application> <!-- service.java exists in same package --> <service android:name=".service" /> </application>

Tengo una clase de servicio. He exportado esta clase a jar y he incrustado el jar en mi aplicación cliente.

Cuando sea necesario, llamo a la clase de servicio. Cuando intento hacer esto, aparece el siguiente error:

Unable to start service Intent {comp={com.sample.service/com.sample.service.serviceClass}} : not found

Tengo otra clase aparte de la clase de servicio, a la que puedo acceder (crear el objeto de esa clase) que están dentro del mismo contenedor.

Siento que he perdido algo en mi configuración o manifiesto más o menos.

Por favor, ayúdame a identificar lo mismo. Mi código está abajo:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent () ; intent.setClassName("com.sample.service" ,"com.sample.service.serviceClass") ; this.startService(intent) ; // when I call this line I get the message... // binding other process continue here }

Cliente manifest.xml

<service android:name="com.sample.service.serviceClass" android:exported="true" android:label="@string/app_name" android:process=":remote"> <intent-filter><action android:name="com.sample.service.serviceClass"></action> </intent-filter> </service>

Gracias por adelantado,
Vinay


En mi caso, el límite máximo de 1 MB para el transporte de datos por intención. Solo usaré Caché o Almacenamiento.


Espero poder ayudar a alguien con esta información también: moví mi clase de servicio a otro paquete y arreglé las referencias. El proyecto estaba perfectamente bien, PERO la clase de servicio no pudo ser encontrada por la actividad.

Al observar el inicio de sesión de logcat noté la advertencia sobre el problema: la actividad no podía encontrar la clase de servicio, pero lo curioso era que el paquete era incorrecto, contenía un carácter "/". El compilador estaba buscando

com.something./service.MyService

en lugar de

com.something.service.MyService

Saqué la clase de servicio del paquete y volví a entrar y todo funcionó bien.


He encontrado el mismo problema. Perdí casi un día intentando comenzar un servicio con el método OnClickListener , fuera de onCreate y después de 1 día, ¡aún no lo he podido! ¡Muy frustrante! Estaba viendo el ejemplo de ejemplo RemoteServiceController . ¡El suyo funciona, pero mi implementación no funciona!

La única forma en que eso funcionaba para mí, fue desde dentro en el método onCreate . Ninguna de las otras variantes funcionó y créanme que las he probado todas.

Conclusión:

  • Si coloca su clase de servicio en un paquete diferente al de la actividad principal, obtendré todo tipo de errores
  • Además, el "/" no pudo encontrar la ruta al servicio, intentó comenzar con Intent(package,className) y nada, también otro tipo de intento de inicio

  • Moví la clase de servicio en el mismo paquete de la actividad Forma final que funciona

  • Esperemos que esto ayude a alguien definiendo los listerners onClick dentro del método onCreate esta manera:

    public void onCreate() { //some code...... Button btnStartSrv = (Button)findViewById(R.id.btnStartService); Button btnStopSrv = (Button)findViewById(R.id.btnStopService); btnStartSrv.setOnClickListener(new OnClickListener() { public void onClick(View v) { startService(new Intent("RM_SRV_AIDL")); } }); btnStopSrv.setOnClickListener(new OnClickListener() { public void onClick(View v) { stopService(new Intent("RM_SRV_AIDL")); } }); } // end onCreate

También es muy importante para el archivo Manifest, asegúrese de que el servicio sea hijo de la aplicación:

<application ... > <activity ... > ... </activity> <service android:name="com.mainActivity.MyRemoteGPSService" android:label="GPSService" android:process=":remote"> <intent-filter> <action android:name="RM_SRV_AIDL" /> </intent-filter> </service> </application>


Para cualquier persona que se encuentre con este hilo, tuve este problema y me estaba tirando de los pelos. ¡Tenía la declaración de servicio FUERA de la etiqueta de finalización ''<application>'' DUH!

DERECHO:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...> ... <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity ...> ... </activity> <service android:name=".Service"/> <receiver android:name=".Receiver"> <intent-filter> ... </intent-filter> </receiver> </application> <uses-permission android:name="..." />

INCORRECTO, pero aún compila sin errores:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...> ... <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity ...> ... </activity> </application> <service android:name=".Service"/> <receiver android:name=".Receiver"> <intent-filter> ... </intent-filter> </receiver> <uses-permission android:name="..." />


Primero, no necesitas android:process=":remote" , así que por favor quítalo, ya que todo lo que hará es tomar RAM extra sin ningún beneficio.

Segundo, dado que el elemento <service> contiene una cadena de acción, úselo:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent=new Intent("com.sample.service.serviceClass"); this.startService(intent); }