2014-02-10 35 views
0

我使用NDK为Android构建C++代码。 我的代码将用作应用程序开发人员的外部SDK。访问来自NDK代码的应用程序数据路径

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

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

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

+1

Native Activity仍然有一个虚拟机,它在很大程度上依赖于它 - 它只是“本地”的,因为第三方开发人员不会编写任何Java代码,但仍然会使用大量Java代码。 –

+0

@ChrisStratton是对的,您不必担心,即使使用NativeActivity,标准Java SDK仍然可用。但有一个聪明的解决方法,不需要Java:http://stackoverflow.com/a/6284443/192373! –

回答

1

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

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

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

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

+0

如何从我的代码访问这些结构? –

+0

正如我所说的,本地活动的入口点需要android_app作为输入,就像你可以在http://developer.android.com/reference/android/app/NativeActivity中看到的那样,void android_main(struct android_app * state)。 html。然后,state-> activity-> externalDataPath给出程序的外部数据存储等。 – eozgonul

相关问题