Question

J'ai créé une activité qui est uniquement destinée à être lancé à partir d'un lien que je ne veux pas cette activité d'avoir une interface graphique (en utilisant un filtre intention.) - Je veux juste démarrer un service et mettre une notification dans la bar. Je l'ai essayé de mettre le filtre l'intention pour le lien dans mon service, mais cela ne fonctionne pas. Y at-il une meilleure chose à faire ce qui répondra aux filtres d'intention - ou puis-je faire mon activité pas une interface graphique
Désolé si je suis confus, Isaac

Était-ce utile?

La solution

Votre meilleur pari semble utiliser un BroadcastReceiver. Vous pouvez créer une nouvelle BroadcastReceiver qui écoute l'intention de déclencher votre notification et commencer à votre service comme celui-ci:

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

Et vous pouvez vous inscrire directement cette IntentReceiver dans l'application Manifest sans avoir besoin de l'inclure dans une activité:

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

Autres conseils

Faisant écho à la réponse précédente, vous ne devriez pas utiliser un récepteur de radiodiffusion.

Dans la même situation, ce que je faisais était de déclarer le thème ainsi:

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

Je ne sais pas si un service fonctionnerait, mais un récepteur de radiodiffusion certainement pas. URL sont lancés à l'aide startActivity (). récepteurs de radiodiffusion ne peuvent pas répondre à cette question.

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

FTA: Notez que, bien que la classe intention est utilisée pour l'envoi et la réception de ces émissions, le mécanisme de diffusion intention ici est complètement séparé de Intentions qui sont utilisés pour lancer des activités avec Context.startActivity (). Il n'y a aucun moyen pour un BroadcastReceiver voir ou Intentions de capture utilisés avec startActivity (); De même, lorsque vous diffusez une intention, vous ne trouverez jamais ou démarrer une activité.

Utilisation des services. Je travaille vraiment. Lorsque vous cliquez sur le programme, il ferait son travail sans aucune interface graphique. Utilisez pendintgintent ... getService (MySerice.class ....). Ensuite, créez une nouvelle MyService de classe étendant la classe de service. A l'intérieur MyService.class, passer outre onStart () et faites ce que vous voulez faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top