【问题标题】:broadcast receiver for missed call in androidandroid中未接来电的广播接收器
【发布时间】:2010-09-08 06:35:57
【问题描述】:

有谁知道未接电话的意图是什么。实际上我想在我的应用程序中发送未接来电和来电的短信。

【问题讨论】:

    标签: android android-intent broadcastreceiver


    【解决方案1】:

    你需要使用 ContentObserver

    public class MissedCallsContentObserver extends ContentObserver
    {
        public MissedCallsContentObserver()
        {
            super(null);
        }
    
        @Override
        public void onChange(boolean selfChange)
        {
            Cursor cursor = getContentResolver().query(
                Calls.CONTENT_URI, 
                null, 
                Calls.TYPE +  " = ? AND " + Calls.NEW + " = ?", 
                new String[] { Integer.toString(Calls.MISSED_TYPE), "1" }, 
                Calls.DATE + " DESC ");
    
            //this is the number of missed calls
            //for your case you may need to track this number
            //so that you can figure out when it changes
            cursor.getCount(); 
    
            cursor.close();
        }
    }
    

    在您的应用中,您只需执行以下操作:

    MissedCallsContentObserver mcco = new MissedCallsContentObserver();
    getApplicationContext().getContentResolver().registerContentObserver(Calls.CONTENT_URI, true, mcco);
    

    【讨论】:

    • 您好,我想知道您是否有意遗漏了cursor.close()?好像没必要因为ContentObserver会自动关闭?
    • 好问题。我不是故意遗漏它,它应该在那里。我会更新我的答案。
    【解决方案2】:

    AFAIK 没有针对未接来电的特定广播。

    您可以观看ACTION_PHONE_STATE_CHANGED 广播,等到电话从EXTRA_STATE_RINGING 转移到EXTRA_STATE_IDLE,然后尝试检查CallLog 内容提供商以查看是否未接来电。我没有尝试过这种技术,但它可能会起作用。

    【讨论】:

    • @CommonsWare-我们能否区分未接电话和已拒绝电话,因为两者都以上述方式起作用!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多