본문 바로가기

안드로이드

CallLog(최근전화기록) 삭제 방법

CallLog 를 삭제하고 싶을때 number 기준으로 삭제해 버리면 최근기록중에 number가 포함된 기록은 다 사라져 버립니다. Calls.ID를 이용해서 삭제해야 선택한 CallLog만 삭제됩니다. 


---------------------------------------------------------------------------------------------------

ArrayList<RecentCalllog> reList = new ArrayList<RecentCalllog>();//폰내장 최근 통화 목록


 private void callLog() {  // RecentCalllog클래스 하나 만든다음 최근전화기록 얻어와서 arraylist add시켜줍니다

        Cursor curCallLog = getCallHistoryCursor(this);

        int callcount=0;

        if (curCallLog.moveToFirst() && curCallLog.getCount() > 0) {

            while (curCallLog.isAfterLast() == false) {

            String callIdx = curCallLog.getString(curCallLog .getColumnIndex(CallLog.Calls._ID));

                String num = curCallLog.getString(curCallLog .getColumnIndex(CallLog.Calls.NUMBER));

            String date = timeToString(curCallLog.getLong(curCallLog .getColumnIndex(CallLog.Calls.DATE)));

            String calltype=null;

            if (curCallLog.getString(curCallLog

                        .getColumnIndex(CallLog.Calls.TYPE)).equals(MESSAGE_TYPE_INBOX)){

                    calltype = "수신";

                }

                else if (curCallLog.getString(curCallLog

                        .getColumnIndex(CallLog.Calls.TYPE)).equals(MESSAGE_TYPE_SENT)){

                    calltype = "발신";                    

                }

            String callDuration =  curCallLog.getString(curCallLog.getColumnIndex(CallLog.Calls.DURATION));

           

                reList.add(new  RecentCalllog ( callIdx ,  num  , date  , calltype , callDuration));

                curCallLog.moveToNext();

                 callcount++;            

            }

        }

    }


  final static private String[] CALL_PROJECTION = { CallLog.Calls.TYPE,

        CallLog.Calls.CACHED_NAME, CallLog.Calls.NUMBER, CallLog.Calls._ID,

        CallLog.Calls.DATE, CallLog.Calls.DURATION };



    private Cursor getCallHistoryCursor(Context context) {//calllog 커서 얻어오기

        Cursor cursor = context.getContentResolver().query(

                CallLog.Calls.CONTENT_URI, CALL_PROJECTION,

                null, null, CallLog.Calls.DEFAULT_SORT_ORDER);

        return cursor;

    }


 private String timeToString(Long time) {//통화한 시간 시:분으로 리턴

    SimpleDateFormat simpleFormat = new SimpleDateFormat("HH:mm");

        String date = simpleFormat.format(new Date(time));

        

        return date;

    }


private void deleteCalllog(String del_id){  //Calllog 삭제(del_id를 받아온 다음 쿼리를 날려서 삭제해준다)

String queryString = CallLog.Calls._ID+"=" + "'" +  del_id + "'";

this.getApplicationContext().getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null); 

}