AndroidManifest.xml 에 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> 지정해 줍니다. 첫번째는 단말의 상태, 두번째는 SMS도착을 받을 수 있는 권한 입니다. 그리고 receiver로 등록 해준 위젯에 <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> 2개의 Action을 등록해줍니다. 이렇게 AndroidManifest.xml 등록이 끝나면
AppWidgetProvider 상속받은 위젯의 onReceive메소드로 전화 왔을때와 SMS가 왔을때 onReceive를 call해주게 됩니다. 2상태의 구분은 String action = intent.getAction();을 통해서 action을 가져와서 구분해주시면 되구요 SMS의 경우는 onReceive가 콜되면 바로 처리 하시면 되구요 단말상태(전화 왔을때의 경우는 ) String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE_IDLE); 를 하여서 state 값을 비교하여서 처리 하셔야 합니다. RINGING: 벨이울리고 있는 상태 OFFHOOK: 전화 중인 상태 IDLE: 대기중인 상태
2011.07.28 14:09:32
안도라이두
해보니,
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE_IDLE); 가 아니고,
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 로 받아서
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
지정해 줍니다. 첫번째는 단말의 상태, 두번째는 SMS도착을 받을 수 있는 권한 입니다.
그리고 receiver로 등록 해준 위젯에
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
2개의 Action을 등록해줍니다.
이렇게 AndroidManifest.xml 등록이 끝나면
AppWidgetProvider 상속받은 위젯의 onReceive메소드로
전화 왔을때와 SMS가 왔을때 onReceive를 call해주게 됩니다.
2상태의 구분은 String action = intent.getAction();을 통해서
action을 가져와서 구분해주시면 되구요
SMS의 경우는 onReceive가 콜되면 바로 처리 하시면 되구요
단말상태(전화 왔을때의 경우는 )
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE_IDLE);
를 하여서 state 값을 비교하여서 처리 하셔야 합니다.
RINGING: 벨이울리고 있는 상태
OFFHOOK: 전화 중인 상태
IDLE: 대기중인 상태