2011-03-05 1 views

답변

1

귀하의 질문은 appWidgets와 관련이 있습니다. 그렇지 않다면, 아래의 해답은 아마도 덜 유용 할 것입니다.하지만 여러분은 여전히 ​​그 부분을 자신의 용도에 맞게 변형 할 수 있다고 생각합니다. 이 같은

우선 몇 가지 액션을 선언 :

Intent intent = new Intent(context, CalendarService.class); 
    intent.setAction(CalendarService.ACTION_HIDE_GUIDE_OVERLAY); 
    intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
    PendingIntent buttonPendingIntent1 = PendingIntent.getService(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

는 그 다음 리모트 뷰와 pendingIntent 등록 :

public static final String ACTION_HIDE_GUIDE_OVERLAY = "dk.something.appwidget.calendar.guide.hide"; 

는 의도와 PendingIntent를 선언 액션을 사용하여 당신의 위젯 :

views.setOnClickPendingIntent(R.id.calendar_button_1, buttonPendingIntent1); 

마지막의 onStartCommand 또는 onHandleIntent에

if (intent.getAction().equals(CalendarService.ACTION_INITIALIZE_CALENDAR)) { 
     int[] appWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS); 
     onInitializeCalendar(appWidgetIds); 
} else if (intent.getAction().equals(CalendarService.ACTION_HIDE_GUIDE_OVERLAY)) { 
     int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 
     onHideGuideOverlay(appWidgetId); 
} else ... 

참고 : 코드 조각이 너무 자신의 사용에 적응하기 위해, 내 유리 위젯에서 거의 직접 촬영, 당신은 것입니다 서비스는, 당신의 방법 중 전화를 결정하는 의도의 조치를 검토 액션 상수를 자신의 두 액션 (각 버튼에 대해 하나의 액션)으로 바꾸려면 R.id.calendar_button_1을 버튼 중 하나의 실제 ID로 바꾸고 CalendarService를 자신의 서비스 클래스 이름 및 메소드 onInitializeCalendar로 바꿉니다. onHideGuideOverlay에 호출하려는 서비스 클래스의 두 메서드 이름을 추가합니다.

한 번에 하나의 위젯 인스턴스 만 표시되는 경우 appWidgetId를 사용하여 주변을 둘러 볼 필요는 없지만 그렇게 보장 할 수는 없습니다. 위젯 인스턴스에서 위젯 인스턴스까지 다양 할 수있는 몇 가지 설정이 있습니다. 그래서 요청에 응답 할 때 서비스에서 얻을 수있는 인 텐트에 클릭 된 appwidget의 ID를 넣습니다.

관련 문제