當我使用「@ string/action_name」定義意圖過濾器操作時,我的BroadcastReceiver永遠不會被調用。如果我將strings.xml中相應的字符串複製/粘貼到AndroidManifest.xml中,那麼它完美地工作!從AndroidManifest.xml中無法使用@string表示法在AndroidManifest.xml中定義<intent-filter>
非工作示例:從AndroidManifest.xml中
<receiver
android:name=".ServerUpdateReceiver" >
<intent-filter>
<action android:name="@string/ACTION_INFORM_USER_SERVER_UPDATE" />
</intent-filter>
</receiver>
工作例如:
<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>
這種事情讓我哭泣。我浪費了將近1小時,試圖弄清楚爲什麼我的'BroadcastReceiver'沒有觸發。使用字符串資源是有意義的,因爲您將所有內容都放在一個地方,避免了重複的常量。現在想象一下,有人來到Manifest,而不是在其他地方改變了行動的字符串......可悲。 – 2016-09-20 14:36:45
這很奇怪,謝謝你的問題 – 2016-09-26 06:49:04