Pregunta

He creado una actividad que sólo está destinado a ser lanzado desde un enlace no quiero esta actividad para tener una interfaz gráfica de usuario (utilizando un filtro intención.) - Sólo quiero que se inicie un servicio y le puso una notificación en la bar. He tratado de poner el filtro de intención para el enlace en mi servicio, pero eso no quiere trabajar. ¿Hay alguna cosa mejor para hacer esto que responderá a los filtros intención - o puedo hacer que mi actividad no tiene una interfaz gráfica de usuario
Lo siento si estoy siendo confuso, Isaac

¿Fue útil?

Solución

Su mejor opción parece ser el uso de un BroadcastReceiver. Puede crear un nuevo BroadcastReceiver que detecta la intención de desencadenar la página de información y comenzar su servicio como este:

public class MyIntentReceiver extends BroadcastReceiver {    
  @Override 
  public void onReceive(Context _context, Intent _intent) {
    if (_intent.getAction().equals(MY_INTENT)) {
      // TODO Broadcast a notification
      _context.startService(new Intent(_context, MyService.class));
    }
  }    
}

Y se puede registrar este IntentReceiver directamente en el manifiesto de aplicación sin necesidad de incluirlo dentro de una actividad:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.domain.myapplication">
  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <service android:enabled="true" android:name="MyService"></service>
    <receiver android:enabled="true" android:name="MyIntentReceiver">
      <intent-filter>
        <action android:name="MY_INTENT" />
      </intent-filter>
    </receiver>
  </application>
</manifest> 

Otros consejos

Haciendo eco de la respuesta anterior, no se debe utilizar un receptor de radiodifusión.

En la misma situación, lo que hice fue declarar el tema de esta manera:

<activity android:name="MyActivity"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.NoDisplay">

No estoy seguro de si un servicio funcionaría, pero un receptor de radiodifusión definitivamente no lo haría. Url de que se lancen utilizando startActivity (). receptores de radiodifusión no pueden responder a esto.

http://developer.android.com/reference/android/content /BroadcastReceiver.html

TLC: Tenga en cuenta que, aunque la clase Intención se utiliza para enviar y recibir estas transmisiones, el mecanismo de difusión intención aquí es totalmente independiente de Propósitos que se utilizan para iniciar actividades con Context.startActivity (). No hay manera de BroadcastReceiver para ver o Intentos de captura utilizados con startActivity (); Del mismo modo, cuando se difunde una intención, nunca encontrar o iniciar una actividad.

El uso de servicio. I trabaja definitivamente. Al hacer clic en el programa, sería hacer su trabajo sin ningún tipo de interfaz gráfica de usuario. Utilice pendintgintent ... getService (MySerice.class ....). A continuación, crear una nueva clase MyService extendiendo la clase de servicio. Dentro MyService.class, anular onStart () y hacer lo que quiere hacer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top