2016-06-15 3 views
0

서비스 (IntentService 확장)에서 로컬 브로드 캐스트를 보낼 때 내 AppWidgetProvider의 onReceive에서 수신되지 않지만 로컬로 전송되지 않으면 동일한 브로드 캐스트가 수신됩니다. 정상입니까? 편집Android AppWidgetProvider가 로컬 브로드 캐스트를 수신하지 않음

: 은 내가 이런 식으로의 AppWidgetProvider <receiver>에 대한 <intent-filter> 내부 <action>을 내 AndroidManifest를에 그것을 언급하는 것을 잊었다 :

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

과 내가 가지고있는 'onReceive'에서의 AppWidgetProvider를 확장 MyAppWidget에

:

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

답변

2

"로컬 방송"의 의미가 LocalBroadcastManager 인 경우 AppWidgetProvider은 기본적으로 응답하지 않습니다. AppWidgetProvider<receiver> 요소를 사용하여 시스템 브로드 캐스트를 청취합니다.

또한, 필요하지 않습니다. AppWidgetProvider —에 대한 마법은 없습니다. 앱 위젯 상태의 변경 사항을 시스템에 알려주는 장소 일뿐입니다. AppWidgetManager을 사용하여 앱의 어느 부분에서든지 앱 위젯 콘텐츠를 업데이트 할 수 있습니다.

+0

"AppWidgetProvider가 기본적으로 응답하지 않습니다"라는 의미는 무엇입니까? LocalBroadcastManager.getInstance (context) .sendBroadcast (Intent) 대신에 sendBroadcast (Intent)를 사용하여 AppWidgetProvider에 사용자 정의 (비 시스템) 브로드 캐스트를 보내야합니까? –

+0

@MarekJ .: "내 sendBroadcast (의도)를 사용해야합니까?"- 예, 또는 내 대답의 두 번째 단락마다 방송을 보내지 마십시오. – CommonsWare

+0

도움에 감사드립니다! 왜 AppWidgetProvider 문서에서 로컬 브로드 캐스트를받지 못했을 까? –

관련 문제