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