1

私は1つの奇妙な問題に直面しています。string.xml次のように、マニフェストでサービス アクションを定義し、同じものを使用しています。

<service android:name=".MyService" >
    <intent-filter >
        <action android:name="@string/my_service_action" />
    </intent-filter>
</service>

また、サービスを開始している間、私は次のように開始しています:

Intent serviceIntent = new Intent(getResources().getString(R.string.my_service_action));
startService(serviceIntent);

誰がどこに問題があるのか​​ 教えてもらえますか。

アクションの同じ値をハードコーディングすると、完全に正常に動作します。いくつかのヒットと試行の後、マニフェストファイルで使用された場合にのみ機能しないことがわかりました(たとえば、マニフェストではなくJavaコードでのみアクション値をハードコードします)。

4

1 に答える 1

2

サービスのアクション文字列として文字列参照を使用できるとは思いません。具体的な文字列値である必要があります。javadocに従って:

android:name Java スタイルの命名規則を使用して処理されるアクションの名前。[ストリング]

例えば:

<service android:name=".MyService" >
    <intent-filter >
        <action android:name="com.demo.service.MY_SERVICE" />
    </intent-filter>
</service>

そして、次のように使用する必要があります。

Intent serviceIntent = new Intent("com.demo.service.MY_SERVICE");
startService(serviceIntent);
于 2012-04-20T11:32:12.490 に答える