⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 retrievenumber.cpp

📁 Explaining how to retrive the caller number from the incoming call in symbian c++
💻 CPP
字号:
/* ====================================================================
 * File: RetrieveNumber.cpp 
 * Created: 07/20/07
 * Author: 
 * Copyright (c): , All rights reserved
 * ==================================================================== */



#include "RetrieveNumber.h"
#include <e32base.h>
#include <EIKENV.H>

#include <aknnotewrappers.h>

CRetrieveNumber* CRetrieveNumber::NewL()
{
	CRetrieveNumber* self = CRetrieveNumber::NewLC();
	CleanupStack::Pop(); // self;
	return self;
}
CRetrieveNumber* CRetrieveNumber::NewLC()
{
	CRetrieveNumber* self = new ( ELeave ) CRetrieveNumber();
	CleanupStack::PushL( self );
	self->ConstructL();
	return self;
}

CRetrieveNumber::CRetrieveNumber() : CActive( EPriorityStandard ),	// Standard priority									
      							 iRemParty(iRemInfoUse),
      							 iCallInfo(iCallInfoUse),
      							 iCallSelection(iCallSelectionUse),
      							 iCallStatusPkg(iCallStatus)	
	{
	}

void CRetrieveNumber::ConstructL()
	{
	iTelephony = CTelephony::NewL();
	
	CActiveScheduler::Add( this );
	}

CRetrieveNumber::~CRetrieveNumber()
	{
		Cancel();
		if (iTelephony)
        {
        delete iTelephony;
        iTelephony = NULL;
        }
	}

void CRetrieveNumber::DoCancel()
	{
	iTelephony->CancelAsync(CTelephony::EVoiceLineStatusChangeCancel);
	}


void CRetrieveNumber::RetrieveNumber()
	{
	
	
	_LIT( KNotifyExamplePanic, "CNotifyExample" );
    __ASSERT_ALWAYS( !IsActive(), User::Panic( KNotifyExamplePanic, 1 ));

	iTelephony->NotifyChange(iStatus, CTelephony::EVoiceLineStatusChange, iCallStatusPkg);
    SetActive();
	}

void CRetrieveNumber::RunL()
{    
    if(iStatus==KErrNone)
    	{
    	   	
    	CTelephony::TCallStatus status = iCallStatus.iStatus;
       	
       	
       	switch ( status )
       			  {
       			  	case CTelephony::EStatusRinging:
       			  		{
       			  		WriteToFile(_L8("EStatusRinging\n   "));
       			  		
       			  		iCallSelectionUse.iLine = CTelephony::EVoiceLine;
						iCallSelectionUse.iSelect = CTelephony::EInProgressCall;
       			  		
       			  		iTelephony->GetCallInfo(iCallSelection,iCallInfo,iRemParty);
						
						TBuf8<100> CallerNumber;
						
						CallerNumber.Copy(iRemInfoUse.iRemoteNumber.iTelNumber);
						WriteToFile(CallerNumber);
						}
          				break;
          			case CTelephony::EStatusConnected :
          				{
          				WriteToFile(_L8("EStatusConnected\n   "));
          				}
            			break;
            		case CTelephony::EStatusAnswering :
            			{
            			WriteToFile(_L8("EStatusAnswering\n	   "));
            			}
            	        break;
			     	case CTelephony::EStatusDialling:
			     		{
            			WriteToFile(_L8("EStatusDialling\n   "));
            			}
            	        break;	
            	    case CTelephony::EStatusDisconnecting:
	       				{
            			WriteToFile(_L8("EStatusDisconnecting\n   "));
            			}
            	        break;
					case CTelephony::EStatusConnecting:
						{
            			WriteToFile(_L8("EStatusConnecting\n   "));
            			}
            	        break;
					case CTelephony::EStatusUnknown:
						{
            			WriteToFile(_L8("EStatusUnknown\n   "));
            			}
						break;
					case CTelephony::EStatusIdle:
						{
						WriteToFile(_L8("EStatusIdle\n   "));
            			}
						break;
				    case CTelephony::EStatusReconnectPending:
				    	{
            			WriteToFile(_L8("EStatusReconnectPending\n   "));
            			}
						break;
				    case CTelephony::EStatusHold:
				    	{
            			WriteToFile(_L8("EStatusHold\n   "));
            			}
						break;
					case CTelephony::EStatusTransferring:
				    	{
            			WriteToFile(_L8("EStatusTransferring\n   "));
            			}
						break;
				    case CTelephony::EStatusTransferAlerting:
				    	{
            			WriteToFile(_L8("EStatusTransferAlerting\n   "));
            			}
						break;  
				  }
		       	
		       	iTelephony->NotifyChange( iStatus,
                              CTelephony::EVoiceLineStatusChange,
                              iCallStatusPkg );
       			SetActive();
       	  }
     	else
     		{
       	  	CEikonEnv::Static()->InfoWinL(_L("Error in:"), _L("status"));	
     		}  
	}

TInt CRetrieveNumber::RunError( TInt aError )
{
	return aError;
}


void CRetrieveNumber::WriteToFile(TDesC8& aContent8)
	{
	_LIT(KFileSpec,"C:\\Nokia\\LogsTelephony.txt");
	TInt iPos=0;
	RFs iFs;
	
	User::LeaveIfError(iFs.Connect());
	RFile iFile;
		
	TInt err = iFile.Open(iFs, KFileSpec, EFileShareExclusive|EFileStreamText|EFileWrite);
	if(err!= KErrNone)
		{
		if (iFile.Create(iFs, KFileSpec, EFileShareExclusive|EFileStreamText|EFileWrite) != KErrNone)
			{
			err = iFile.Open(iFs, KFileSpec, EFileShareExclusive|EFileStreamText|EFileWrite);
			}
		}
	
	err =iFile.Seek(ESeekEnd,iPos);
	if (err != KErrNone)
		{
		TBuf<10> errBuf;
		errBuf.AppendNum(err);
		CEikonEnv::InfoWinL(_L("Seek Unsuccessful"), errBuf);			
		}	
	
	err = iFile.Write(aContent8);
	iFile.Flush();

	if (err != KErrNone)
		{
		TBuf<10> errBuf;
		errBuf.AppendNum(err);
		CEikonEnv::InfoWinL(_L("Write Unsuccessful"), errBuf);			
		}
	iFile.Close();
	iFs.Close();
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -