Domanda

Ho creato un'attività che ha il solo scopo di essere lanciato da un collegamento non voglio questa attività per avere una GUI (utilizzando un filtro intento.) - Voglio solo che per avviare un servizio e mettere una notifica nella bar. Ho cercato di mettere il filtro intenti per il collegamento al mio servizio, ma che non funziona. C'è una cosa migliore per fare questo che risponderà ai filtri intento -? O posso solo fare la mia attività non ha una GUI
Scusate se devo essere fonte di confusione, Isaac

È stato utile?

Soluzione

La cosa migliore sembra essere utilizzando un BroadcastReceiver. È possibile creare una nuova BroadcastReceiver che ascolta con l'intento di scatenare la vostra notifica e di avviare il servizio di questo:

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));
    }
  }    
}

E si può registrare questo IntentReceiver direttamente nell'applicazione manifesto senza bisogno di includerlo all'interno di un'attività:

<?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> 

Altri suggerimenti

Facendo eco risposta precedente, non si dovrebbe usare un ricevitore broadcast.

Nella stessa situazione, quello che ho fatto è stato quello di dichiarare il tema nel seguente modo:

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

non sono sicuro se un servizio avrebbe funzionato, ma un ricevitore trasmissione sicuramente non sarebbe. URL di lancio dei utilizzando startActivity (). riceventi per la radiodiffusione non possono rispondere a questo.

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

FTA: Si noti che, anche se la classe intento è utilizzato per l'invio e la ricezione di queste trasmissioni, il meccanismo di trasmissione intento è completamente separato dal Intenti che vengono utilizzati per avviare attività con Context.startActivity (). Non v'è alcun modo per un BroadcastReceiver di vedere o Intenti di cattura usati con startActivity (); Allo stesso modo, quando si trasmette un Intent, non troverete mai o avviare un'attività.

Usa Servizio. Ho sicuramente funziona. Quando si sceglie il programma, sarebbe fare il suo lavoro senza alcuna interfaccia grafica. Utilizzare pendintgintent ... getService (MySerice.class ....). Quindi, creare una nuova classe che estende MyService la classe di servizio. All'interno MyService.class, ignorare onStart () e fare quello che vuoi fare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top