在S60 3rd SDK plug in 中,有一个DEMO程序可以获取、删除、清空手机wap浏览器的历史记录,此DEMO下载地址:
http://wiki.forum.nokia.com/index.php/Image:AhleUsage.zip
现在将关键代码通过控制台程序展示如下:
#include "TestConsoleApp.h"
#include <e32base.h>
#include <e32std.h>
#include <e32cons.h> // Console
#include <ahle.h>
// Constants
_LIT(KTextConsoleTitle, "Console");
_LIT(KTextFailed, " failed, leave code = %d");
_LIT(KTextPressAnyKey, " [press any key]\n");
// Global Variables
LOCAL_D CConsoleBase* console;
// write all messages to this
// Local Functions
LOCAL_C void MainL()
{
CDesC16ArrayFlat* itemsArray = new(ELeave) CDesC16ArrayFlat(8);
CDesC16ArrayFlat* itemsNameArray = new(ELeave) CDesC16ArrayFlat(8);
CleanupStack::PushL(itemsArray);
CleanupStack::PushL(itemsNameArray);
CAHLE* ahle = CAHLE::NewL();
ahle->AdaptiveListL(*itemsArray, *itemsNameArray, TUint(100), _L(""), EAHLEAdaptiveSiteDetails);
TBuf<500> tempBuffer;
for (TInt i=0; i<itemsNameArray->Count(); i++)
{
TPtrC16 url = itemsArray->MdcaPoint(i);
tempBuffer.Append(url);
tempBuffer.Append(_L("\n"));
}
console->Write(tempBuffer);
tempBuffer.Zero();
CleanupStack::PopAndDestroy(2);
delete ahle;
ahle= NULL;
}
LOCAL_C void DoStartL()
{
// Create active scheduler (to run active objects)
CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
CleanupStack::PushL(scheduler);
CActiveScheduler::Install(scheduler);
MainL();
// Delete active scheduler
CleanupStack::PopAndDestroy(scheduler);
}
// Global Functions
GLDEF_C TInt E32Main()
{
// Create cleanup stack
__UHEAP_MARK;
CTrapCleanup* cleanup = CTrapCleanup::New();
// Create output console
TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(KConsFullScreen,KConsFullScreen)))
;
if (createError)
return createError;
console->Printf(_L("\n"));
// Run application code inside TRAP harness, wait keypress when terminated
TRAPD(mainError, DoStartL())
;
if (mainError)
console->Printf(KTextFailed, mainError);
console->Printf(KTextPressAnyKey);
console->Getch();
delete console;
delete cleanup;__UHEAP_MARKEND;
return KErrNone;
}
#include <e32base.h>
#include <e32std.h>
#include <e32cons.h> // Console
#include <ahle.h>
// Constants
_LIT(KTextConsoleTitle, "Console");
_LIT(KTextFailed, " failed, leave code = %d");
_LIT(KTextPressAnyKey, " [press any key]\n");
// Global Variables
LOCAL_D CConsoleBase* console;
// write all messages to this
// Local Functions
LOCAL_C void MainL()
{
CDesC16ArrayFlat* itemsArray = new(ELeave) CDesC16ArrayFlat(8);
CDesC16ArrayFlat* itemsNameArray = new(ELeave) CDesC16ArrayFlat(8);
CleanupStack::PushL(itemsArray);
CleanupStack::PushL(itemsNameArray);
CAHLE* ahle = CAHLE::NewL();
ahle->AdaptiveListL(*itemsArray, *itemsNameArray, TUint(100), _L(""), EAHLEAdaptiveSiteDetails);
TBuf<500> tempBuffer;
for (TInt i=0; i<itemsNameArray->Count(); i++)
{
TPtrC16 url = itemsArray->MdcaPoint(i);
tempBuffer.Append(url);
tempBuffer.Append(_L("\n"));
}
console->Write(tempBuffer);
tempBuffer.Zero();
CleanupStack::PopAndDestroy(2);
delete ahle;
ahle= NULL;
}
LOCAL_C void DoStartL()
{
// Create active scheduler (to run active objects)
CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
CleanupStack::PushL(scheduler);
CActiveScheduler::Install(scheduler);
MainL();
// Delete active scheduler
CleanupStack::PopAndDestroy(scheduler);
}
// Global Functions
GLDEF_C TInt E32Main()
{
// Create cleanup stack
__UHEAP_MARK;
CTrapCleanup* cleanup = CTrapCleanup::New();
// Create output console
TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(KConsFullScreen,KConsFullScreen)))
;
if (createError)
return createError;
console->Printf(_L("\n"));
// Run application code inside TRAP harness, wait keypress when terminated
TRAPD(mainError, DoStartL())
;
if (mainError)
console->Printf(KTextFailed, mainError);
console->Printf(KTextPressAnyKey);
console->Getch();
delete console;
delete cleanup;__UHEAP_MARKEND;
return KErrNone;
}
运行后控制台将打印出手机浏览器的浏览历史记录。