안드로이드 개발 질문/답변
(글 수 45,052)
Service 에서 해당위젯의 내용을 주기적으로 업데이트하는걸 만들려고 하는데 잘 안되네요.
도와주십시오~ 뭘 잘못한걸까요? 진짜 죽겠습니다 ㅜㅜ
서비스에서는 위젯의 ids를 뽑아보면 45 라고 나오는데
막상 위젯에서 getExtra 를 해보면 1 이라고만 나옵니다.
서비스에서 보낸 putExtra 를 위젯에서 제대로 받지를 못하네요.
뭐가 문제인지 좀 봐주십시오.
<Service 쪽 처리부분>
<WidgetProvider 부분 처리부분>
...........
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName provider = new ComponentName("com.exam.ex", "com.exam.ex.ExWidget");
int[] ids = appWidgetManager.getAppWidgetIds(provider); //여기서 뽑아보면 [0]은 45란 숫자가 나옵니다
Intent alarmIntent = new Intent(context, IdeaTagWidgetProvider.class);
alarmIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
alarmIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids); //여기서 45를 집어넣습니다.
PendingIntent pendIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(android.app.Activity.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), updateInterval, pendIntent);
...........
<WidgetProvider 부분 처리부분>
public void onReceive(Context context, Intent intent){
...........
if(AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)){
Bundle extras = intent.getExtras();
if(extras != null){
// 위에 Service에서 보냈던 [0]을 뽑아보면 45 가 아니라 1 이 나옵니다 ㅜㅜ
int[] appWidgetIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);
if(appWidgetIds != null && appWidgetIds.length > 0){
for(int i=0;i<appWidgetIds.length;i++){
//출력 결과가 이렇게 나옵니다 => [0] : 1
Log.d("my", "[" + Integer.toString(i) + "] : " + Integer.toString(appWidgetIds[i]));
}
this.onUpdate(context, AppWidgetManager.getInstance(context), appWidgetIds);
}
}
............
}
..........도와주십시오~ 뭘 잘못한걸까요? 진짜 죽겠습니다 ㅜㅜ




[출처] 안드로이드 AppWidget, RemoteViews 그리고 CheckBox|작성자 휴우