나는 2 개의 버튼과 1 개의 서비스 클래스가있는 하나의 위젯을 가지고 있는데,이 버튼에는 서비스 클래스의 메소드를 호출하기 위해 버튼을 clikcing하는 두 가지 메소드가있다. 모든 참조 또는 코드 예제? 어떻게 할 수 있습니까?브로드 캐스트 수신기 및 서비스와 함께 appwidget 사용에 대한 도움이 필요하십니까?
thankx
나는 2 개의 버튼과 1 개의 서비스 클래스가있는 하나의 위젯을 가지고 있는데,이 버튼에는 서비스 클래스의 메소드를 호출하기 위해 버튼을 clikcing하는 두 가지 메소드가있다. 모든 참조 또는 코드 예제? 어떻게 할 수 있습니까?브로드 캐스트 수신기 및 서비스와 함께 appwidget 사용에 대한 도움이 필요하십니까?
thankx
귀하의 질문은 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를 넣습니다.