Frage

Ich habe eine Aktivität erstellt, die nur über einen Link ins Leben gerufen werden sollte Ich mag diese Tätigkeit keine GUI haben (einen Intent-Filter verwenden.) - Ich mag es nur einen Dienst starten und eine Benachrichtigung in dem PUT Bar. Ich habe versucht, die Intent-Filter für den Link in meinem Dienst zu stellen, aber das funktioniert nicht. Gibt es eine bessere Sache, dies zu tun, die auf Vorsatz Filter beantworten - oder kann ich nur meine Tätigkeit machen keine GUI haben
Sorry, wenn ich meine es verwirrend, Isaac

War es hilfreich?

Lösung

Ihre beste Wette scheint eine BroadcastReceiver zu werden. Sie können einen neuen BroadcastReceiver erstellen, die für das Intent hört Ihre Benachrichtigung auslösen und Ihren Dienst wie folgt beginnen:

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

Und Sie können diese IntentReceiver registrieren direkt in der Anwendung Manifest ohne es innerhalb einer Aktivität zu schließen, um:

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

Andere Tipps

vorherige Antwort Echoing, sollten Sie nicht einen Rundfunkempfänger verwenden.

In der gleichen Situation, was ich tat, war das Thema zu erklären, so:

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

Ich bin mir nicht sicher, ob ein Dienst funktionieren wird, aber ein Rundfunkempfänger würde auf jeden Fall nicht. URLs verwenden startActivity () ins Leben gerufen. Broadcast-Empfänger kann nicht darauf reagieren.

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

FTA: Beachten Sie, dass, obwohl die Intent-Klasse für das Senden und Empfangen dieser Sendungen verwendet wird, hier die Absicht Broadcast-Mechanismus ist völlig unabhängig von Intents, die verwendet werden Aktivitäten beginnen mit Context.startActivity (). Es gibt keine Möglichkeit für eine BroadcastReceiver zu sehen oder Capture-Intents verwendet mit startActivity (); Ebenso, wenn Sie eine Intent übertragen, werden Sie nie eine Aktivität oder starten.

Verwenden Dienst. Ich funktioniert auf jeden Fall. Wenn Sie das Programm klicken, würde er seine Arbeit ohne GUI tun. Verwenden Sie pendintgintent ... getService (MySerice.class ....). Erstellen Sie dann eine neue Klasse MyService die Service-Klasse erweitern. Innerhalb MyService.class, außer Kraft setzen onStart () und tun, was Sie tun wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top