在 Android 中从 C++ 本机代码创建临时文件

问题描述 投票:0回答:1

我正在开发一个 Android 项目,该项目在

C++
中有本机库。在代码中的某个地方,我遇到了尝试创建新文件的这一行:

namespace fs = boost::filesystem;
dest_path = fs::absolute(make_public(fs::temp_directory_path())) / fs::path("tmp-" + to_string(u) + "." + extension);
fs::remove(dest_path);
fs::copy_file(*doc.get_path(), dest_path);

现在 boost API

temp_directory_path
返回
/data/local/tmp
在 Android 中的路径。但似乎 Android 应用程序不允许在此位置创建文件。有没有办法通过
adb shell
授予权限来在此位置创建文件/文件夹?或者是否有
/data/local/tmp
目录的替代方案,因为我只需要一个临时位置并且不打算长时间存储这些文件,或者如何在
ndk
中或通过
boost
获取应用程序的数据目录?

android c++ boost android-ndk
1个回答
0
投票

我的建议是在库或类初始化期间从 Java/Kotlin 代码获取目录,将

fs::temp_directory_path()
替换为从 Java/Kotlin 代码获取的值。

为此,我可能会使用应用程序缓存目录,通过使用

Context.getCacheDir()
。这将为您提供一个
File
并且您应该通过调用
file.getAbsolutePath()
来获取绝对路径(因为本机代码不使用 URI,而是使用常规文件系统路径)。

© www.soinside.com 2019 - 2024. All rights reserved.