gpt4 book ai didi

java - 对于放置在 Android 应用程序 Assets 文件夹中的文件,JNI C 代码中的 fopen 失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:52:05 27 4
gpt4 key购买 nike

我在 android 应用程序的 assets 文件夹中保存了一些文件。

现在我编译该应用程序并获得 apk。 [当我提取 apk 时,我的文件在 Assets 文件夹中]

现在我在移动设备上安装那个 apk

并且在该应用程序中有一些使用 JNI 接口(interface)的 C 编程代码。

现在我在 c 编程中为该文件调用的 fopen() 失败了。

fopen("myfile","r");

我知道在安装 apk android 时将 Assets 文件复制到 /data/data/com.packagename/something

那么有谁知道那个路径所以我可以在 fopen() 中给出它

或者是否有任何其他方法可以在 C 编程中打开该文件。


如果我将这些文件保存在 sdcard 文件夹中并像 fopen("/sdcard/myfile","r"); 一样访问,那么它就可以工作了。但我只想将这些文件保留在 Assets 文件夹中

最佳答案

您可以使用 Assets 管理器访问 JNI 代码中的 Assets 。它是 NDK 的一部分。

http://developer.android.com/ndk/reference/group___asset.html

类似于:

EXPORT_API void LoadAsset(char* filename, jobject assetManager){
AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
AAsset* asset = AAssetManager_open(mgr, filename, AASSET_MODE_BUFFER);
AAsset_read(asset, ...);
}

然后在 Java 中是这样的:

LoadAsset("myfile", getContext().getAssetManager());

关于java - 对于放置在 Android 应用程序 Assets 文件夹中的文件,JNI C 代码中的 fopen 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36178522/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com