마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

위젯에서의 질문입니다.. - 전부분에서 조금 비슷한 문젠데...

0 추천

제가 모르는게 너무 많아서 못하는 거 같아 코드랑 같이 설명 하겠습니다.

일단 제게는 MainWidget.java 클래스와 Button Receiver.java 클래스가 있습니다 (부주요한 부분의 코드는 삭제했습니다)

두개의 클래스가 있지만, 일단 제코드는 버튼을 클릭했을때만 발생하는 이벤트를 잡아 블루투스를 끄거나 킵니다

여기서 제문제는 제 위젯을 통해서가 아닌, 다른곳 예를들면 핸드폰 자체내에서 블루투스의 상태를 바꾸면

제위젯에서는 그상태가 바뀌었는지 모릅니다

제위젯으로 블루투스를 켰는데, 다른곳에서 꺼버리면, 제위젯은 아직 켜져있는 상태로 되어있는거죠..

그 블루투스의 상태를 항상 체크해서 위젯에 표시하고 싶은데, 제위젯이 언제 어떻게 그 이벤트가 발생되서 그 이벤트를 잡아내 표시 할수 있는지를 모르겠습니다.

요새 열심히 공부하고 있습니다만, 좀 쉽게 설명해 주시겠습니까? 

public class MainWidget extends AppWidgetProvider {

    public static final String ACTION_WIDGET_BLUETOOTH="ActionReceiverBluetooth";

   @Override

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

        remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);

        Intent active = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        active.setAction(ACTION_WIDGET_BLUETOOTH);
        PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
        remoteViews.setOnClickPendingIntent(R.id.btnBluetooth, actionPendingIntent);

    }

}

public class ButtonReceiver extends BroadcastReceiver {

   @Override

    public void onReceive(Context context, Intent intent) {
        remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
        this.context = context;
 
        if (intent.getAction().equals(MainWidget.ACTION_WIDGET_BLUETOOTH)) {
            System.out.println("bluetooth");
            Log.i("button-click","Bluetooth");
            toggleBluetooth(context);
    }

}

제생각엔 onReceiver안에 if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED))  컨디션을 넣으면 될꺼 같았는데 전혀 안잡히네요.. 

이거 원... 감이 전혀 안오니...

redpotato (750 포인트) 님이 2014년 8월 3일 질문
redpotato님이 2014년 8월 3일 수정

1개의 답변

0 추천
브로드캐스트 등록은 하셨나요?

registerReceiver ← 아니면 manifest 에 라도?
Gioskhan (12,060 포인트) 님이 2014년 8월 4일 답변
네 두곳에다 등록했습니다만.. 전혀 ACTION_STATE_CHANGED를 잡아내질 못하는군요
...