Я столкнулся с одной проблемой. Я определил свое действие службы в string.xml
и использовал его в манифесте следующим образом:
<service android:name=".MyService" >
<intent-filter >
<action android:name="@string/my_service_action" />
</intent-filter>
</service>
Также при запуске службы я начинаю вот так:
Intent serviceIntent = new Intent(getResources().getString(R.string.my_service_action));
startService(serviceIntent);
Может ли кто-нибудь сказать мне, где проблема.
Если я нажимаю одно и то же значение действия, он отлично работает. После нескольких попыток n я обнаружил, что он не работает только при использовании в файле манифеста (например, жесткий код, значение действия в java-коде только не отображается).
Я не думаю, что вы можете использовать ссылку на строку как строку действия для службы. Это должно быть конкретное строковое значение. Согласно javadoc:
android: name Имя действия, которое обрабатывается, с использованием соглашения об именах в стиле Java. [Строка]
Например:
<service android:name=".MyService" >
<intent-filter >
<action android:name="com.demo.service.MY_SERVICE" />
</intent-filter>
</service>
и тогда вы должны использовать его как:
Intent serviceIntent = new Intent("com.demo.service.MY_SERVICE");
startService(serviceIntent);
A user-legible name for the given item. [string, reference]
, которая означает , что он позволяет установить либо строку или Reference строки. Так что на самом деле это говорит вам, что ему нужно. Теперь, если вы посмотрите тот, который я опубликовал, он говорит только String, что означает, что вы не можете использовать ссылку. Вы можете убедиться в этом сами в манифесте :)