Qt Android 申请写文件到内部存储

server/2024/9/25 19:15:15/

问题描述

在项目中我们有一个软件配置文件,在软件更新一些配置后需要将配置信息保存到配置文件中,Windows 下是将配置文件保存到软件当前目录下,但是 Android 环境下无法保存到程序当前目录,最终只能将配置文件保存到内部存储中(平板的存储器)。

Android 写文件是需要申请权限的。

解决方案

  1. 在 UPCNC3.pro 中添加 Android 扩展模块。
android {
QT += androidextras
}
  1. main.cpp 头部添加头文件。
#ifdef __ANDROID__
#include <QtAndroid>
// 在 UPCNC3.pro 中没有添加模块时可以直接这样引用头文件
// #include <QtAndroidExtras/QtAndroid>
#endif
  1. 写一个函数申请写文件权限,在平板上运行时会弹窗申请权限。
#ifdef __ANDROID__
bool checkPermission()
{QtAndroid::PermissionResult r = QtAndroid::checkPermission("android.permission.WRITE_EXTERNAL_STORAGE");if(r == QtAndroid::PermissionResult::Denied) {QtAndroid::requestPermissionsSync( QStringList() << "android.permission.WRITE_EXTERNAL_STORAGE" );r = QtAndroid::checkPermission("android.permission.WRITE_EXTERNAL_STORAGE");if(r == QtAndroid::PermissionResult::Denied) {return false;}}return true;
}
#endif
  1. main 函数中调用申请权限函数,之后就可以在 /storage/emulated/0 目录下读写文件了。
int main(int argc, char *argv[])
{
#ifdef __ANDROID__if(checkPermission())return -1;QString appPath = "/storage/emulated/0/UPCNC3";QDir dir(appPath);if(!dir.exists()) {qInfo() << "create " << appPath << dir.mkdir(appPath);}// 如果校准脚本不存在,复制校准脚本QString scriptPath = "/storage/emulated/0/UPCNC3/script";if(!QFile::exists(scriptPath + "/Calculate.lua"))copyDirectory("assets:/script/", scriptPath);
#endif//...
}

http://www.ppmy.cn/server/18299.html

相关文章

VBA之Word应用第二章第五节:将光标转到指定书签位置

《VBA之Word应用》&#xff08;版权10178982&#xff09;&#xff0c;是我推出第八套教程&#xff0c;教程是专门讲解VBA在Word中的应用&#xff0c;围绕“面向对象编程”讲解&#xff0c;首先让大家认识Word中VBA的对象&#xff0c;以及对象的属性、方法&#xff0c;然后通过实…

uniapp获取当前经纬度、地图逆地址解析

该功能可用于移动端&#xff0c;官网&#xff1a;uni.getLocation(OBJECT) | uni-app官网 uni.getLocation({type: gcj02, // 坐标类型&#xff0c;默认为wgs84&#xff0c;可选的值为gcj02和bd09ll// isHighAccuracy:true,success: res > {// 获取成功&#xff0c;经度和纬…

php时间人性化展示

在PHP中,可以使用date()函数和strtotime()函数来实现时间的人性化展示。下面是一个示例代码: <?php // 获取当前时间戳 $timestamp = time();// 格式化时间 $formattedTime = date(Y年m月d日 H:i:s, $timestamp);echo

大小写不规范引起的LVS问题

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 往期文章链接: LVS常见问题解析 综合网表不规范,大小写混用常导致LVS问题,比如两个端口clk和CLK只有大小写区别,PR工具是可以识别为两个端口的,只不过Calibre LVS默认不区分大小写,会报错。 …

乘数而上,创邻科技入选2024数商典型应用场景“乘数榜”

4月18日&#xff0c;由浙江省科学技术协会指导的2024未来数商大会在杭州成功举办。本次大会以“场景突破 乘数而上”为主题&#xff0c;国际国内数商共聚未来科技城学术交流中心&#xff0c;聚焦数据要素市场的制度创新、数据治理、场景应用与生态构建等话题展开研讨。 大会现…

企业应该如何处理云安全问题。

企业甚至云提供商配置错误的云基础设施可能会导致多个漏洞&#xff0c;从而显着增加组织的攻击面。德迅云安全通过帮助企业和部署云安全的核心组件来解决这些问题。其中包括全面的安全态势、持续优化的策略、全周期风险管理、流量监控、威胁响应、风险缓解和数字资产管理。 云安…

HttpMessageConverter

一、HttpMessageConverter HttpMessageConverter是Spring MVC中非常重要的一个接口。翻译为&#xff1a;HTTP消息转换器。该接口下提供了很多实现类&#xff0c;不同的实现类有不同的转换方式。 1.1 什么是HTTP消息 HTTP消息其实就是HTTP协议。HTTP协议包括请求协议和响应协议。…

探索 去中心化的Web3.0

随着区块链技术的日益成熟和普及&#xff0c;Web3&#xff08;Web 3.0&#xff09;已经成为一个无法忽视的趋势。Web3不仅仅是一个技术概念&#xff0c;更是一个去中心化、透明、用户数据拥有权归还给用户的互联网新时代。在这篇文章中&#xff0c;我们将深入探讨Web3技术的核心…