Here is my code:

RPbkViewResourceFile phonebookResource( *(CEikonEnv::Static()) );
if ( !phonebookResource.IsOpen())
{
phonebookResource.OpenL();
}
// Add searching array to parameters
CPbkMultipleEntryFetchDlg::TParams params;
if(!iPbkContactEngine)
{
iPbkContactEngine = CPbkContactEngine::NewL();
CleanupStack::PushL(iPbkContactEngine);
}
params.iContactView = &iPbkContactEngine->AllContactsView();

// Launch fetching dialog
CPbkMultipleEntryFetchDlg* fetchDlg = CPbkMultipleEntryFetchDlg::NewL( params, *iPbkContactEngine );
fetchDlg->SetMopParent(this);
TInt okPressed = fetchDlg->ExecuteLD();
CleanupStack::PushL( params.iMarkedEntries );
TBuf<100> tempBuf;
TBuf<100> bufArray;
TBuf<100> iNumberGeneral;
TBuf<100> iNumberMoblie;
TBuf<100> iNumberHome;
TBuf<100> iNumberVideo;
TBuf<100> iNumberWork;

if (iRPhone)
{
iRPhone->Reset();
}
else
{
iRPhone = new (ELeave) RArray<Phonestr>;
}

if ( okPressed )
{
// Get the first selected contacts id array
Phonestr phoneStatus;
const TContactItemId cid = ( *params.iMarkedEntries )[0];

// Open the selected contact using Phonebook engine,
CPbkContactItem* pbkItem = iPbkContactEngine->ReadContactLC( cid );


TPbkContactItemField* fnameField = pbkItem->FindField(EPbkFieldIdFirstName);
if (fnameField)
{
fnameField->GetTextL(tempBuf);
}
TPbkContactItemField* lnameField = pbkItem->FindField(EPbkFieldIdLastName);
if (lnameField)
{
lnameField->GetTextL(bufArray);
bufArray.Append(tempBuf);
phoneStatus.iBNumber = EFalse;
phoneStatus.iPhoneNumber.Zero();
phoneStatus.iPhoneNumber.Copy(bufArray);
iRPhone->Append(phoneStatus);
}

// get the General PhoneNumber
TPbkContactItemField* phoneFieldGeneral = pbkItem->FindField(EPbkFieldIdPhoneNumberGeneral);
if (phoneFieldGeneral)
{
phoneFieldGeneral->GetTextL(iNumberGeneral);
phoneStatus.iBNumber = ETrue;
phoneStatus.iPhoneNumber.Zero();
phoneStatus.iPhoneNumber.Copy(iNumberGeneral);
iRPhone->Append(phoneStatus);
}

// get the Mobile PhoneNumber
TPbkContactItemField* phoneFieldMobile = pbkItem->FindField(EPbkFieldIdPhoneNumberMobile);
if (phoneFieldMobile)
{
phoneFieldMobile->GetTextL(iNumberMoblie);
phoneStatus.iBNumber = ETrue;
phoneStatus.iPhoneNumber.Zero();
phoneStatus.iPhoneNumber.Copy(iNumberMoblie);
iRPhone->Append(phoneStatus);
}
//get the email address
TPbkContactItemField *phoneFieldHome=pbkItem->FindField(EPbkFieldIdPhoneNumberHome);
if (phoneFieldHome)
{
phoneFieldHome->GetTextL(iNumberHome);
phoneStatus.iBNumber = ETrue;
phoneStatus.iPhoneNumber.Zero();
phoneStatus.iPhoneNumber.Copy(iNumberHome);
iRPhone->Append(phoneStatus);
}

TPbkContactItemField *videoNumber=pbkItem->FindField(EPbkFieldIdPhoneNumberVideo);
if (videoNumber)
{
videoNumber->GetTextL(iNumberVideo);
phoneStatus.iBNumber = ETrue;
phoneStatus.iPhoneNumber.Zero();
phoneStatus.iPhoneNumber.Copy(iNumberVideo);
iRPhone->Append(phoneStatus);
}

TPbkContactItemField *workNumber=pbkItem->FindField(EPbkFieldIdPhoneNumberWork);
if (workNumber)
{
workNumber->GetTextL(iNumberWork);
phoneStatus.iBNumber = ETrue;
phoneStatus.iPhoneNumber.Zero();
phoneStatus.iPhoneNumber.Copy(iNumberWork);
iRPhone->Append(phoneStatus);
}

// add codes to get other fields you interested in
//......

CleanupStack::PopAndDestroy(pbkItem); // pbkItem, eMailAdd
}
//release the resource
CleanupStack::PopAndDestroy(); // iMarkedEntriesiPbkContactEngine

CleanupStack::PopAndDestroy(iPbkContactEngine);
//CleanupStack::PopAndDestroy(dataBase);
iPbkContactEngine = NULL;
phonebookResource.Close(); // Close the phonebook view

in my mmp file: i added ReadUserData and WriteUserData capabilities, and also i authenticate my application.
i can run it on epoc but i can't run in mobilephone
platform is s60 3rd

this problem has confused me for 3 days, please help me

thanks