Активность Android без GUI

Я создал активность, которая предназначена только для запуска из ссылки (с использованием фильтра намерений). Я не хочу, чтобы в этом мероприятии был графический интерфейс. Я просто хочу, чтобы он запустил службу и отправил уведомление в бар. Я попытался поместить фильтр намерений для ссылки в свою службу, но это не работает. Есть ли лучшее, что можно сделать, чтобы ответить на фильтры намерений - или я могу просто заставить свою деятельность не иметь графический интерфейс?
Извините, если я запутаюсь, Isaac

Ответ 1

Лучше всего использовать BroadcastReceiver. Вы можете создать новый BroadcastReceiver, который будет прослушивать Intent для запуска вашего уведомления и запуска вашего сервиса следующим образом:

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

И вы можете зарегистрировать этот IntentReceiver непосредственно в манифесте приложения без необходимости включать его в действие:

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

Ответ 2

Повторяя предыдущий ответ, вы не должны использовать широковещательный приемник.

В той же ситуации, что я сделал, было объявить тему следующим образом:

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

Ответ 3

Я не уверен, что служба будет работать, но приемник вещания определенно не будет. Url запускаются с использованием startActivity(). Трансляционные приемники не могут ответить на это.

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

FTA: Обратите внимание, что, хотя класс Intent используется для отправки и получения этих широковещательных передач, механизм трансляции Intent здесь полностью отделен от намерений, которые используются для запуска Activities with Context.startActivity(). Нет возможности для BroadcastReceiver видеть или захватывать намерения, используемые с startActivity(); аналогично, когда вы передаете намерение, вы никогда не найдете или не начнете действие.

Ответ 4

Использовать Сервис. Я работаю определенно. Когда вы нажимаете на программу, она будет работать без GUI. Используйте pendintgintent... getService (MySerice.class....). Затем создайте новый класс MyService, расширяющий класс Service. Внутри MyService.class переопределите onStart() и сделайте все, что хотите.