zoukankan      html  css  js  c++  java
  • 在运行期间检查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及后继机型

  • 相关阅读:
    mysql 数据操作 单表查询 group by 注意
    mysql 数据操作 单表查询 group by 聚合函数
    mysql 数据操作 单表查询 group by 聚合函数 没有group by情况下
    mysql 数据操作 单表查询 group by 介绍
    【洛谷P3586】LOG
    【YbtOJ#20078】路径之和
    【ABC181】F
    【洛谷P7045】金牌
    【AT2165】Median Pyramid Hard
    【洛谷P3708】koishi的数学题
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/1862703.html
Copyright © 2011-2022 走看看