我试图删除特定来电号码后挂断但这些code不能正常工作 [英] I am trying to delete a particular incoming number after hang up but these code not working properly

查看:213
本文介绍了我试图删除特定来电号码后挂断但这些code不能正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图从通话记录中删除特定的来电号码时,电话挂断。我想我能做到但code不工作的人数仍停留在通话记录。
广播时调用但这不是删除呼入的号码是正常工作。
先谢谢了。

I am trying to delete a particular incoming number from call log when phone hang-up. I tried as i can do but that code not working the number still remain in call log. it is working properly when broadcast invoke but this is not deleting number of incoming call. Thanks in Advance.

public class ListenPhoneState extends BroadcastReceiver {
private boolean isPressOffHock = false;
    static private String incomingNumberToDelete;

@Override
    public void onReceive(Context context, Intent intent) {
        try {
           // TELEPHONY MANAGER class object to register one listner
            TelephonyManager tmgr = (TelephonyManager) context
                    .getSystemService(Context.TELEPHONY_SERVICE);

            //Create Listner
            MyPhoneStateListener PhoneListener = new MyPhoneStateListener();

            // Register listener for LISTEN_CALL_STATE
            tmgr.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE);      
    } catch (Exception e) {
        Log.e("Phone Receive Error", " " + e);
    }

    if(incomingNumberToDelete != null)
    {
        String queryString="NUMBER="+incomingNumberToDelete; 
        context.getContentResolver().delete(CallLog.Calls.CONTENT_URI,queryString,null);
        Log.d("Delete", "Delete Number  " + incomingNumberToDelete );
    }
}

private class MyPhoneStateListener extends PhoneStateListener {

    public void onCallStateChanged(int state, String incomingNumber) {

        if(state == TelephonyManager.CALL_STATE_RINGING)
        {
            incomingNumberToDelete = incomingNumber;
            Log.d("Check", "income " + incomingNumberToDelete );
        }


        switch(state) {
        case TelephonyManager.CALL_STATE_IDLE:
            //Log.d("IDLE", state + "incoming" + incomingNumber);
            isPressOffHock = true;
            break;

        case TelephonyManager.CALL_STATE_RINGING:
            //Log.d("RINGING", state + "incoming" + incomingNumber);
            break;


        case TelephonyManager.CALL_STATE_OFFHOOK:
            String msg = "New Phone Call Event. Incomming Number : "+incomingNumber;
        //  Log.d("CALL_STATE_OFFHOOK",msg );
            break;
         }
    }
}

}

推荐答案

通常有一种手机状态的广播和写入或系统活动(如通话记录或电话振铃)系统数据之间的延迟。现在,你的接收器可能是试图删除通话记录之前,它是present。

Usually there is a delay between the broadcast of a phone state and the system data that is written or system activities (such as call logs or phone ringing). Right now, your receiver is probably trying to delete the call log before it is present.

您可以延迟删除或看看这个帖子注册一个ContentObserver:

You could delay the delete or take a look at this post for registering a ContentObserver:

删除通话记录通话通话结束后

这篇关于我试图删除特定来电号码后挂断但这些code不能正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆