19

当我使用“@string/action_name”来定义意图过滤器操作时,我的 BroadcastReceiver 永远不会被调用。如果我将 strings.xml 中的相应字符串复制/粘贴到 AndroidManifest.xml 中,那么它可以完美运行!

AndroidManifest.xml 中的非工作示例:

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

AndroidManifest.xml 中的工作示例:

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

为了完整起见,strings.xml 包含以下行:

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

1 回答 1

29

规范来看,无法使用资源标识符配置操作。它必须是一个简单的字符串,也许是为了避免要求 Android Intent 调度系统打开您的 APK 以确定过滤器的用途。

于 2012-04-17T07:26:47.997 回答