안녕하세요..
상태바에 나타나는 아이콘 및 텍스트 삭제 문의입니다.
구글링 검색을 통해서
NotificationManager 를 이용하여 상태바에 아이콘과 텍스트를 보여주는 방법을 찾았습니다.
또한 notificationmanager.cancle(int id) 를 통해서 삭제를 한다는 것도 알겠습니다.
그러나 제가 궁금한것은 부재중 전화가 왔을때 상태바에 남는 부재중전화 아이콘과 notification list의 내용을 삭제하고 싶습니다.
그러려면 부재중전화의 id를 알아야 삭제를 할텐데요...요 부재중 id를 알고계시거나 그 값을 찾아내는 방법을 알고계신 제겐 태양과도 같으신 분이 계신지요..
아니면 다른방법이라도 상태바에 있는 부재중내용을 안보이게 할수 있는 방법이 있는지 궁금합니다.
고수님들의 많은 관심과 작은 팁이라도 조언 부탁드립니다.
감사합니다.
missed call notification이 있을 때 폰북의 최근기록에 가면 해당 notifcation이 사라지는 걸 볼 수 있습니다. 그쪽 코드를 보면
ITelephony iTelephony = ITelephony.Stub.asInterface(ServiceManager.getService("phone"));
opus님 답변 감사합니다.
알려주신대로 아래와 같이 코딩하여 테스트를 해봤습니다.
그런데 에뮬레이터도 마찬가지고 제가 가지고있는 갤럭시S2도 상태바의 부재중 아이콘이 삭제 되지 않았습니다.
아래의 코드만 oncreat메소드 안에 선언하여 테스트 했습니다.
NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancel(1);
부재중전화의 id 값이 1이 아닌것으로 사료되는데요....이렇게 테스트하는것이 문제가 있는것인지 모르겠습니다.
ITelephony.Stub.asInterface(ServiceManager.getService("phone"));
if (iTelephony != null) {
iTelephony.cancelMissedCallsNotification();
} else {
Log.w(TAG, "Telephony service is null, can't call " +
"cancelMissedCallsNotification");
}
안드로이드 2.3 이상에서는 ITelephoy 클래스를 지원 안한다던데요...
제 휴대폰이 갤2라서...또한 앞으로 계속 버전업된 폰들이 출시될텐데요...
ITelephony iTelephony =
ITelephony.Stub.asInterface(ServiceManager.getService("phone"));
위 내용을 코딩하는 순간 이클립스에서 아래와 같은 오류를 발생시킵니다.
ITelephony cannot be resolved to a type
2.3이상의 버전에서 사용할수 있는 방법은 없을까요?




관련 소스를 보니 아래와 같이 되어 있더군요.
packages/apps/Phone/src/com/android/phone/NotificationMgr.java
void notifyMissedCall(String name, String number, String label, long date) {
....
// make the notification
Notification note = new Notification(mContext, // context
android.R.drawable.stat_notify_missed_call, // icon
mContext.getString(R.string.notification_missedCallTicker, callName), // tickerText
date, // when
mContext.getText(titleResId), // expandedTitle
expandedText, // expandedText
intent // contentIntent
);
configureLedNotification(note);
mNotificationMgr.notify(MISSED_CALL_NOTIFICATION, note);
...
}
요놈이 Notificaiton ID인데요.. MISSED_CALL_NOTIFICATION
static final int MISSED_CALL_NOTIFICATION = 1; 로 설정되어 있습니다.
삭제할 때에는 아래처럼.....
mNotificationMgr.cancel(MISSED_CALL_NOTIFICATION);
그럼... 수고하세요.