找了一堆RIL材料,发现做一个拦截倒是很容易的,立马搞了一个。不过还是有些缺陷。只能过滤电话,无法定制UI。
只用了2~3个RIL API就做好了。很方便。
HRESULT hr = RIL_Initialize(dwIndex, &fnResultProc, &fnNotifyProc, -1, (DWORD)this, &m_hRil);
if (FAILED(hr))
{
//PrintInfoX("RIL_Initialize: %08lx/n", res);
}
//消息回调
void CXXXXX::fnNotifyProc(DWORD dwCode, const void *lpData, DWORD cbdata, DWORD dwParam)
{
ASSERT(dwParam!=0);
((CXXXXX*)dwParam)->HandleNotify(dwCode, lpData, cbdata);
}
void CCallHost::HandleNotify(DWORD dwCode, const void *lpData, DWORD cbdata)
{
switch(dwCode) {
case RIL_NOTIFY_RING:
ProcessCallControlRingEvent((RILRINGINFO*)lpData, cbdata);
PrintInfoX("HandleCallControlRingEvent");
break;
case RIL_NOTIFY_CONNECT: //拨打的时候得到该消息
ProcessCallControlConnectEvent((RILCONNECTINFO*)lpData, cbdata);
PrintInfoX("HandleCallControlConnectEvent");
break;
case RIL_NOTIFY_DISCONNECT:
....