2016-06-15 8 views
0

サービスからローカルブロードキャストを送信するとき(IntentServiceを拡張するとき)、それは自分のAppWidgetProviderのonReceiveでは受信されませんが、ローカルに送信されないと同じブロードキャストが受信されます。それは普通ですか?Android AppWidgetProviderがローカルブロードキャストを受信して​​いない

EDIT: 私は私のAndroidManifestに私はこのようなAppWidgetProvider <receiver>ため<intent-filter>内部<action>持っていることを言及するのを忘れてしまった:

<receiver android:name="MyAppWidget"> 
<intent-filter> 
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    <action android:name="my.package.MY_ACTION" /> 
</intent-filter> 
... 

とMyAppWidgetで私が持っている 'onReceive' でAppWidgetProviderを拡張:

if (intent.getAction().equals("my.package.MY_ACTION")) { 
    // do something 
} 

答えて

2

"ローカルブロードキャスト"とは、LocalBroadcastManagerを意味する場合、AppWidgetProviderはデフォルトで応答しません。 AppWidgetProviderは、<receiver>要素を使用してシステムブロードキャストを受信して​​います。

さらに、これは必要ではありません。 AppWidgetProvider —これは、アプリウィジェットの状態の変化をシステムに知らせるための指定された場所にすぎません。 AppWidgetManagerを使用して、アプリの任意の部分からアプリウィジェットのコンテンツを更新できます。

+0

「AppWidgetProviderがデフォルトで応答しない」とはどういう意味ですか? AppWidgetProviderに任意のカスタム(非システム)ブロードキャストを送信するには、LocalBroadcastManager.getInstance(context).sendBroadcast(Intent)の代わりにsendBroadcast(Intent)を使用する必要がありますか? –

+0

@MarekJ .: "私はsendBroadcast(インテント)を使用する必要がありますか" - はい、または私の答えの2番目の段落ごとに放送をまったく送信しません。 – CommonsWare

+0

助けてくれてありがとう!私はAppWidgetProviderドキュメンテーションのどこにでもローカル放送が受信されないのはなぜですか? –

関連する問題