从 NDK 代码访问应用程序数据路径

lys*_*cid 3 java-native-interface android native android-ndk

我正在使用 NDK 为 Android 构建 C++ 代码。我的代码将用作应用程序开发人员的外部 SDK。

是否可以从本机代码访问应用程序的数据路径?

一种选择是使用 JNI 调用 JVM 并查找此信息,但是由于我正在编写库代码,因此我不确定我的 SDK 不会用于所有本机应用程序 (NativeActivity)。

实现这一目标的最佳选择是什么?

eoz*_*nul 5

可以从完整的本机代码访问应用程序的数据路径。外部和内部存储路径存储在android_app->activity中,类型为ANativeActivity,android_app结构体定义在native Activity的入口点,所以你不必担心任何事情。

/**
* Path to this application's internal data directory.
*/
const char* internalDataPath;

/**
 * Path to this application's external (removable/mountable) data directory.
 */
const char* externalDataPath;
Run Code Online (Sandbox Code Playgroud)

如果没有本地活动,可以通过 JNI 查询存储路径,如注释中所述。