我们可以为传入和传出呼叫编写单独的广播接收器吗? 因为我想对来电和拨出电话执行不同的操作。 有没有办法区分它们。我尝试了各种方法,但它没有用。
答案 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应该足够),以确保信息写入日志!