Moja funkcja BroadcastReceiver nigdy nie jest wywoływana, gdy używam "@ string/nazwa_działania" w celu zdefiniowania działania filtra zamiaru. Jeśli skopiuję/wkleję odpowiedni ciąg z pliku strings.xml do AndroidManifest.xml, to działa idealnie!Nie można użyć notacji @string do zdefiniowania <filtr intencji> w AndroidManifest.xml
dla przykład roboczych od AndroidManifest.xml:
<receiver
android:name=".ServerUpdateReceiver" >
<intent-filter>
<action android:name="@string/ACTION_INFORM_USER_SERVER_UPDATE" />
</intent-filter>
</receiver>
przykład Praca z AndroidManifest.xml:
<receiver
android:name=".ServerUpdateReceiver" >
<intent-filter>
<action android:name="com.franklinharper.intent.action.ACTION_INFORM_USER_SERVER_UPDATE" />
</intent-filter>
</receiver>
Tylko dla kompletności, strings.xml zawiera następujący wiersz:
<string name="ACTION_INFORM_USER_SERVER_UPDATE">com.franklinharper.intent.action.ACTION_INFORM_USER_SERVER_UPDATE</string>
Tego rodzaju rzeczy sprawiają, że płaczę. Zmarnowałem prawie godzinę próbując dowiedzieć się, dlaczego mój 'BroadcastReceiver' nie wyzwolił. Używanie zasobu ciągów ma sens, ponieważ masz wszystko w jednym miejscu i unikasz powielania stałych. Teraz wyobraź sobie, że ktoś przychodzi i zmienia ciąg akcji w Manifestie, ale nie w innych miejscach ... Żałosnych. –
To dziwne, dzięki za quesiton –