用于来电的独立接收器

时间:2011-12-22 09:34:14

标签: android broadcastreceiver phone-call

我们可以为传入和传出呼叫编写单独的广播接收器吗? 因为我想对来电和拨出电话执行不同的操作。 有没有办法区分它们。我尝试了各种方法,但它没有用。

1 个答案:

答案 0 :(得分:0)

您可以让一个类扩展 PhoneStateListener ,您应该 onCallStateChanged 方法。手机状态更改为 TelephonyManager.CALL_STATE_IDLE 后,您可以解析通话记录:

final String[] callsProjection = new String[] { Calls.TYPE, Calls.DURATION, Calls.DATE, Calls.NUMBER };
final Cursor cursor = mContext.getContentResolver().query(Calls.CONTENT_URI, callsProjection, null, null, Calls.DATE + " DESC");

获得该信息后,您可以轻松查看呼叫类型的最后一个条目:

    if (cursor.moveToFirst()) {
        final int idType = cursor.getColumnIndex(Calls.TYPE);
        if(t == Calls.INCOMING_TYPE) {            
        } else if (t == Calls.OUTGOING_TYPE) {
        } else { /* missed call */ }
    }
    cursor.close();

注意: 在解析通话记录之前,您可能需要等待几秒钟(3应该足够),以确保信息写入日志!