如何在Qt中调用context.getExternalFilesDir

How to call context.getExternalFilesDir in Qt

本文关键字:调用 context getExternalFilesDir Qt      更新时间:2023-10-16

我正在使用Qt5.13.0androidextras库。使用QAndroidJniObject我尝试调用Java方法context.getExternalFilesDir(null),以获得/storage/emulated/0/Android/data路径。QStandardPaths没有涵盖这条路,所以我认为我是被迫这样做的。所有原生 Android 应用程序在/storage/emulated/0/Android/data中都有其目录,命名法如下:com.company.appname。我正在尝试在Qt中完成相同的任务。在我的清单 XML 文件中,我设置了正确的包名称。

我不知道如何使用 c++ 代码中的QAndroidJniObject来获取路径。

QAndroidJniObject 类有一些关于如何使用 jni 的信息,但一般来说,需要一些练习才能理解它是如何工作的。

这应该会给你你需要的结果。我把它放在main.cpp,但把它放在你需要的地方,并确保在你的.h或.cpp文件中添加#include <QtAndroidExtras>

auto androidContext = QtAndroid::androidContext();
QAndroidJniObject dir = QAndroidJniObject::fromString(QString(""));
QAndroidJniObject path = androidContext.callObjectMethod("getExternalFilesDir",
"(Ljava/lang/String;)Ljava/io/File;",
dir.object());
qInfo() << "Path: " + path.toString();

输出:"Path: /storage/emulated/0/Android/data/org.qtproject.example.untitled/files"