Android активность, без графического интерфейса

голоса
29

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

Задан 08/02/2009 в 18:29
источник пользователем
На других языках...                            


4 ответов

голоса
94

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

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

<activity android:name="MyActivity"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.NoDisplay">
Ответил 25/06/2011 в 09:50
источник пользователем

голоса
19

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

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> 
Ответил 09/02/2009 в 07:10
источник пользователем

голоса
4

Я не уверен, если услуга будет работать, но широковещательный приемник определенно не будет. URL, запускаются с помощью startActivity (). Вещательные приемники не могут реагировать на это.

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

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

Ответил 06/08/2010 в 14:49
источник пользователем

голоса
3

Используйте службу. Я определенно работает. При нажатии на программу, она будет делать свою работу без какого-либо графического интерфейса. Используйте pendintgintent ... GetService (MySerice.class ....). Затем создайте новый класс MyService расширяющий класс обслуживания. Внутри MyService.class, переопределения OnStart () и делать все, что вы хотите сделать.

Ответил 28/12/2010 в 23:22
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more