2012-04-17 19 views
16

Mi BroadcastReceiver nunca se llama cuando uso "@ string/nombre_actitud" para definir la acción del filtro de intención. Si copio/pego la cadena correspondiente de strings.xml en AndroidManifest.xml, ¡entonces funciona perfectamente!No se puede usar la notación @string para definir <intent-filter> en AndroidManifest.xml

no ejemplo de trabajo de AndroidManifest.xml:

<receiver 
    android:name=".ServerUpdateReceiver" > 
    <intent-filter> 
     <action android:name="@string/ACTION_INFORM_USER_SERVER_UPDATE" /> 
    </intent-filter> 
</receiver> 

Ejemplo de trabajo de AndroidManifest.xml:

<receiver 
     android:name=".ServerUpdateReceiver" > 
     <intent-filter> 
      <action android:name="com.franklinharper.intent.action.ACTION_INFORM_USER_SERVER_UPDATE" /> 
     </intent-filter> 
    </receiver> 

simplemente para la corrección, strings.xml contiene la siguiente línea:

<string name="ACTION_INFORM_USER_SERVER_UPDATE">com.franklinharper.intent.action.ACTION_INFORM_USER_SERVER_UPDATE</string> 
+1

Este tipo de cosas me hacen llorar. He perdido casi 1 hora tratando de descubrir por qué mi 'BroadcastReceiver' no se activó. Usar un recurso de cadena tiene sentido porque tiene todo en un solo lugar y evita las constantes duplicadas. Ahora imagine que alguien viene y cambia la cadena de acción en el Manifiesto pero no en los otros lugares ... Patético. –

+0

Eso es extraño, gracias por la pregunta –

Respuesta

26

Desde spec, no hay forma de configurar una acción con un identificador de recursos. Tiene que ser una cadena simple, tal vez para evitar que se requiera que el sistema de envío Android Intent abra su APK para descubrir para qué sirve el filtro.

+4

Si le entiendo, y la documentación, correctamente, la sintaxis "@ cadena/nombre" no se interpreta en este caso. Esto es bastante confuso porque el plugin ADT está muy contento de realizar la autocompletación. Lo que intentaba hacer era tener un único nombre de acción al que se refirieran el Código y el manifiesto. Pero esto no parece ser posible. –

+0

Es triste, ya que quería hacer todo bastante constante, pero está bien. –

Cuestiones relacionadas