我正在try 使用(Asset NDK apis)从APK中的Assets文件夹读取JSON文件
我使用AAssetManager_fromJava
在本机端使用Dalvik AssetManager对象.
但因为我需要在JNI_OnLoad中加载JSON文件,并且它在应用程序组件的onCreate方法之前被调用.在调用getAssets()方法时,我得到了空的NullPointerException(由于android.content.Context为空).
如何解决此问题?
PS:我需要在JNI_OnLoad本身中加载assets资源 ,库应该在静态块中加载,即在调用onCreate之前.
public class MainActivity extends Activity {
static {
System.loadLibrary("nativeLibrary");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public AssetManager getAssetManager() {
return getAssets();
}
}
jobject getAssetManagerFromJava(JniEnv* env, jobject obj) {
jclass clazz = env->GetObjectClass(obj);
jmethodID method = env->GetMethodID(clazz, "getAssetManager", "()Landroid/content/res/AssetManager;");
jobject ret = env->CallObjectMethod(obj, method);
return ret;
}
jobject jam = getAssetManagerFromJava(env, obj);
AAssetManager* am = AAssetManager_fromJava(env, jam); // am is getting NULL (issue)