如何获取某一个应用程序的产品版本号

std::string GetAppProductVersion(char* path)

{        

             VS_FIXEDFILEINFO verInfo;

              DWORD dwHandle;        

             DWORD dwSize = GetFileVersionInfoSize(path, &dwHandle);        

             if (dwSize != 0)       

             {              

                         BYTE* pData = new BYTE[dwSize];              

                        if (!GetFileVersionInfo(path, dwHandle, dwSize, pData))              

                        {                    

                                   delete [] pData;                    

                                   return strVersion;              

                         }

                         void* pBuf = NULL;               

                         UINT pBufLen;              

                         if (!VerQueryValue(pData, "//StringFileInfo//080404e4//ProductVersion", &pBuf, &pBufLen))    {                      

                                      delete [] pData;                       

                                       return strVersion;             

                           }

                         char szVersion[80];             

                         memcpy(szVersion, pBuf, pBufLen);             

                         szVersion[pBufLen] = 0;              

                        strVersion = szVersion;            

                        delete [] pData;      

           }

            return strVersion;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以考虑在监听到u盘插入后将db.apk拷贝到设备中的某个目录下,然后再进行版本号比较。可以选择将db.apk拷贝到应用程序专用目录下的某个子目录中,这样拷贝的文件只能由应用程序访问。具体实现方式如下: 1. 在 AndroidManifest.xml 文件中添加以下权限: ``` <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ``` 2. 在监听到 ACTION_MEDIA_MOUNTED 广播后,获取挂载路径,然后将 db.apk 拷贝到应用程序专用目录下的某个子目录中,例如 /data/data/your.package.name/files/db.apk: ```java String mountPath = intent.getData().getPath(); String srcPath = mountPath + "/db.apk"; String destPath = getFilesDir() + "/db.apk"; File srcFile = new File(srcPath); File destFile = new File(destPath); if (srcFile.exists() && srcFile.isFile()) { try { InputStream in = new FileInputStream(srcFile); OutputStream out = new FileOutputStream(destFile); byte[] buffer = new byte[1024]; int length; while ((length = in.read(buffer)) > 0) { out.write(buffer, 0, length); } in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } } ``` 3. 使用 pm.getPackageArchiveInfo() 方法获取刚刚被拷贝的 db.apk 的版本号: ```java PackageManager pm = getPackageManager(); PackageInfo info = pm.getPackageArchiveInfo(destPath, PackageManager.GET_ACTIVITIES); if (info != null) { int versionCode = info.versionCode; // 进行版本号比较 } ``` 4. 在 u 盘卸载时删除拷贝的 db.apk: ```java File destFile = new File(destPath); if (destFile.exists() && destFile.isFile()) { destFile.delete(); } ``` 需要注意的是,如果应用程序专用目录下的子目录不存在,需要先创建该目录。此外,应用程序专用目录下的文件只能由应用程序访问,如果需要将 db.apk 拷贝到其他目录下,需要申请相应的权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值