hi guys,

i have a application which will listen to incoming calls. so in the
TelephonyManager.CALL_STATE_IDLE state which means the call is hung up
i'm deleting the current number from the Call Log.

To delete the Call log i used  ContentObserver which will notify me
when a new entry is added to the Call Log.

10 out of 8 times this works fine. but sometimes onChange(boolean b)
is not notified

my guess is this can happen due to last entry is not added to the
CallLog in CALL_STATE_IDLE state. so that means i'm doing this in a
wrong place.

so guys could you please let me know when should i delete this call
log??


this is how i delete call log

case TelephonyManager.CALL_STATE_IDLE:

                                listeneNativeInbox();

protected void listeneNativeInbox() {

                context.getContentResolver().registerContentObserver(
                                CallLog.Calls.CONTENT_URI, true, new 
MyInboxListener(handler));

        }

        class MyInboxListener extends ContentObserver {

                public MyInboxListener(Handler handler) {
                        super(handler);
                        // TODO Auto-generated constructor stub
                }

                @Override
                public boolean deliverSelfNotifications() {
                        // TODO Auto-generated method stub
                        return false;
                }

                @Override
                public void onChange(boolean selfChange) {
                        // TODO Auto-generated method stub
                        boolean b = false;
                        Uri books = 
Uri.parse("content://com.sabretch.colorEyeD/SABRE");
                        Log.d("Authority", books.getAuthority());
                        Cursor cursor = 
context.getContentResolver().query(books, null,
                                        "Mobile" + "='" + phonenbr + "'", null,
                                        "category " + "DESC");
                        if (cursor != null) {
                                if (cursor.moveToNext()) {
                                        b = true;
                                }
                        }
                        Message msg = new Message();
                        msg.obj = "xxxxxxxxxx";
                        handler.sendMessage(msg);
                        Cursor cur = context.getContentResolver().query(
                                        CallLog.Calls.CONTENT_URI, null, null, 
null,
                                        CallLog.Calls._ID + " DESC");

                        cur.moveToNext();
                        long threadIdIn = cur
                                        
.getLong(cur.getColumnIndex(CallLog.Calls._ID));

                        /*
                         * Uri uri = 
ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI,
                         * threadIdIn);
                         */
                        if (b) {
                                ContentValues values = new ContentValues();
                                values.put(CallLog.Calls.NUMBER, "4444444444");
                                values.put(CallLog.Calls.CACHED_NAME, 
"Unknown");
                                // values.put(CallLog.Calls.TYPE, 
CallLog.Calls.INCOMING_TYPE);
                                // long time = System.currentTimeMillis() - 
5000000;
                                // values.put(CallLog.Calls.DATE, time);

                                // int x = 
context.getContentResolver().delete(uri, null, null);
                                try {
                                        int x = 
context.getContentResolver().update(
                                                        
CallLog.Calls.CONTENT_URI, values,
                                                        CallLog.Calls._ID + 
"='" + threadIdIn + "'", null);
                                        Log.d("FFFFFFFFFASSDSSDESD", 
Integer.toString(x));
                                        // = true;
                                } catch (Exception e) {
                                        // TODO: handle exception
                                        int x = 
context.getContentResolver().update(
                                                        
CallLog.Calls.CONTENT_URI, values,
                                                        CallLog.Calls._ID + 
"='" + 0 + "'", null);
                                        // = true;
                                }
                        }
                        System.exit(0);
                        // }
                }
        }


regards,
Donald

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to