• 在运行期间检查S60平台版本(转)


    在运行期间检查S60平台版本

    CS000933

    • 开发伙伴平台:

    S60 3rd Edition, MR

    S60 3rd Edition, FP2

    • 详细描述

    下列代码演示了如何在运行时检测S60平台的版本,这里提供了两个不同的方法,一个为S60第三版FP2之前版本的解决方案,一个为S60第三版FP2手机的解决方案。第一个方法检查安装在手机中的SIS文件的版本号,第二个方法是用S60第三版FP2中的Version Info API方法。

    下列代码只需自签名即可执行

    [edit]MMP文件

    第一个方法要使用TFindFile,需要下列链接库

    LIBRARY  efsrv.lib

    第二个方法是用VersionInfo,需要如下链接库

    LIBRARY  platformver.lib

    [edit]源文件:使用TFindFile

    #include <f32file.h>  // TFindFile// On return, aMajor and aMinor contain the highest version number found 
     
    from
    // the .sis file names
    void GetS60PlatformVersionL(RFs& aFs, TUint& aMajor, TUint& aMinor)
    {
    TFindFile fileFinder = aFs;
    CDir* result;
     
    _LIT(KS60ProductIDFile, "Series60v*.sis");
    _LIT(KROMInstallDir, "z:\\system\\install\\");
     
    User::LeaveIfError(fileFinder.FindWildByDir(KS60ProductIDFile,
    KROMInstallDir, result));
    CleanupStack::PushL(result);
     
    // Sort the file names so that the newest platforms are first
    User::LeaveIfError(result->Sort(ESortByName | EDescending));
     
    // Parse the version numbers from the file name (e.g. Series60v3_1.sis)
    aMajor = (*result)[0].iName[9] - '0';
    aMinor = (*result)[0].iName[11] - '0';
    CleanupStack::PopAndDestroy(result);
    }// Connect to the file server session
    RFs fsSession;
    User::LeaveIfError(fsSession.Connect());
    CleanupClosePushL(fsSession);
     
    // Obtain the version number
    TUint major;
    TUint minor;
    GetS60PlatformVersionL(fsSession, major, minor);
    CleanupStack::PopAndDestroy(); // fsSession
     
    // Display the version number
    TBuf<255> buffer;
    _LIT(KTxt, "Version: %d.%d");
    buffer.Format(KTxt, major, minor);
    CAknInformationNote* note = new (ELeave)CAknInformationNote(ETrue);
    note->ExecuteLD(buffer);

    [edit]源文件:使用VersionInfo

    #include <versioninfo.h>  // VersionInfo// On return, aMajor and aMinor contain the version information
    TInt GetS60PlatformVersionL(RFs& aFs, TUint& aMajor, TUint& aMinor)
    {
    VersionInfo::TPlatformVersion platformVersion;
    TInt ret = VersionInfo::GetVersion(platformVersion, aFs);
    if (ret == KErrNone)
    {
    aMajor = platformVersion.iMajorVersion;
    aMinor = platformVersion.iMinorVersion;
    }
    return ret;
    }// Connect to the file server session
    RFs fsSession;
    User::LeaveIfError(fsSession.Connect());
    CleanupClosePushL(fsSession);
     
    // Obtain the version number
    TUint major;
    TUint minor;
    User::LeaveIfError(GetS60PlatformVersionL(fsSession, major, minor));
    CleanupStack::PopAndDestroy(); // fsSession
     
    // Display the version number
    TBuf<255> buffer;
    _LIT(KTxt, "Version: %d.%d");
    buffer.Format(KTxt, major, minor);
    CAknInformationNote* note = new (ELeave)CAknInformationNote(ETrue);
    note->ExecuteLD(buffer);

    注意上述方法只能用于S60第三版FP2及后继机型

  • 相关阅读:
    Hive介绍和Hive环境搭建
    数学【p1658】 购物
    背包【p1858】 多人背包(次优解 or 第k优解)
    Manacher【p4555】 [国家集训队]最长双回文串
    Manacher【p1659】 [国家集训队]拉拉队排练
    数学【p2117】 小z的矩阵
    数学【p2613】 【模板】有理数取余(费马小定理)
    贪心+数学【p3156】 [CQOI2011]分金币 ([HAOI2008]糖果传递)
    线段树【 bzoj3132 】【p4145 】上帝造题的七分钟2 / 花神游历各国
    ST表【p1311】 选择客栈
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/1862703.html
Copyright © 2020-2023  润新知