开发安卓MP3播放器:Qt 6.4下获取QtAndroid.h头文件方法咨询
Qt 6.4 安卓权限获取替代方案(原QtAndroid.h适配)
Qt 6.4里找不到QtAndroid.h是正常情况——Qt6直接移除了Qt5中的QtAndroid类,把安卓原生交互相关API整合到了Qt Android Extras模块,头文件结构也做了调整。按以下步骤解决:
- 先给项目添加模块依赖:
- 用CMake的话,在CMakeLists.txt里加这两行:
find_package(Qt6 REQUIRED COMPONENTS AndroidExtras) target_link_libraries(你的项目名称 PRIVATE Qt6::AndroidExtras) - 用QMake的话,直接在.pro文件里追加:
QT += androidextras
- 用CMake的话,在CMakeLists.txt里加这两行:
- 替换头文件:把原来的
#include <QtAndroid.h>改成#include <QtAndroidExtras/QtAndroid> - 权限申请代码示例(以MP3文件访问需要的存储/音频权限为例):
#include <QtAndroidExtras/QtAndroid> #include <QDebug> void requestAudioAccessPermission() { const QString storagePerm = "android.permission.READ_EXTERNAL_STORAGE"; // Android 13及以上需额外申请音频媒体权限 const QString audioPerm = "android.permission.READ_MEDIA_AUDIO"; auto storageStatus = QtAndroid::checkPermission(storagePerm); auto audioStatus = QtAndroid::checkPermission(audioPerm); if (storageStatus == QtAndroid::PermissionResult::Denied || audioStatus == QtAndroid::PermissionResult::Denied) { QtAndroid::requestPermissionsSync({storagePerm, audioPerm}); storageStatus = QtAndroid::checkPermission(storagePerm); audioStatus = QtAndroid::checkPermission(audioPerm); if (storageStatus == QtAndroid::PermissionResult::Granted && audioStatus == QtAndroid::PermissionResult::Granted) { qDebug() << "权限已获取,可正常访问MP3文件"; // 此处编写文件读取逻辑 } else { qDebug() << "权限被拒绝,无法访问音频文件"; } } else { qDebug() << "权限已存在,直接执行文件操作即可"; // 此处编写文件读取逻辑 } } - 配置AndroidManifest.xml:在文件中添加权限声明
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
原Qt5的QtAndroid文档涵盖的功能,在Qt6中都可通过Android Extras模块实现,仅API细节略有调整,按上述操作即可完成适配。
内容的提问来源于stack exchange,提问作者keehl
相关产品推荐
相关产品推荐

