2012-04-17 12 views
16

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> 
+1

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. –

+0

To dziwne, dzięki za quesiton –

Odpowiedz

26

Od spec, nie ma możliwości skonfigurowania akcji z identyfikatorem zasobu. Musi to być prosty ciąg znaków, być może w celu uniknięcia wymogu uruchomienia systemu APC systemu Android Intent w celu ustalenia, do czego służy filtr.

+4

Jeśli rozumiem ciebie i dokumentację, poprawnie składnia "@ string/name" nie jest interpretowana w tym przypadku. Jest to dość mylące, ponieważ wtyczka ADT jest całkowicie zadowolona z autouzupełniania. Próbowałem stworzyć jedno unikalne działanie, o którym mowa w Kodeksie i manifeście. Ale wydaje się to niemożliwe. –

+0

To smutne, ponieważ chciałem, aby wszystko było stałe, ale jest w porządku. –

Powiązane problemy