2011-02-01 9 views
1

Мне не повезло получить услугу, чтобы начать с экрана предпочтений, и не может найти примеры в Интернете. Это то, что я делаю:Как запустить службу из XML?

Предпочтение XML:

<PreferenceScreen 
    android:title="Start Service"> 
    <intent 
     android:action="com.test.app.myservice" /> 
</PreferenceScreen> 

манифеста:

<service 
    android:enabled="true" 
    android:name=".myservice"> 
    <intent-filter> 
     <action 
      android:action="com.test.app.myservice" /> 
    </intent-filter> 
</service> 

Ошибка:

ERROR/AndroidRuntime(7912): android.content.ActivityNotFoundException: 
No Activity found to handle Intent { act=com.test.app.myservice } 

Любые идеи?

ответ

0

Сообщение об ошибке показывает, что происходит: вам нужно запустить Activity, а не службу. Попытайтесь создать нормальную активность предпочтений и отредактировать изменение настройки там.

+0

Хорошо, я не думал об этом. – user491236

0

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

+0

У меня уже есть меню, как вы описываете, с флажком и слушателем. Проблема в том, что это «откалибровать» задачу, и поэтому нет смысла иметь флажок. Предложение WarrenFaith о том, что я создаю новый объект Preference, кажется самым элегантным обходным решением. – user491236

0

вы можете зарегистрировать приемник для вашего намерения и приступить к работе с ресивером, это значит, что если вы хотите запустить сервис с любого check.box экрана настроек, или вы можете использовать существующие функции обратного вызова onPreference change listners для начать услугу в отношении предпочтений.