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 に答える