我正在使用mupdf库进行注释。在注释之后,当我们在代码下面写入mupdfactivity时写入
@Override
public void onBackPressed() {
if (core != null && core.hasChanges()) {
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (which == AlertDialog.BUTTON_POSITIVE)
core.save();
finish();
}
};
AlertDialog alert = mAlertBuilder.create();
alert.setTitle("Save Changes");
alert.setMessage(getString(R.string.document_has_changes_save_them_));
alert.setButton(AlertDialog.BUTTON_POSITIVE,
getString(R.string.yes), listener);
alert.setButton(AlertDialog.BUTTON_NEGATIVE,
getString(R.string.no), listener);
alert.show();
} else {
super.onBackPressed();
}
}
但是当我点击core.save()方法时,它会将我重定向到MuPdfCore.java中的本机函数体。
private native void saveInternal();
我想更改保存文件的路径。搜索此方法实现,在哪里可以获得save方法的实现?如果有人为此工作过吗?
提前致谢
答案 0 :(得分:1)
您可以在platform/android/jni/mupdf.c
中找到您正在查找的函数以及从Java端调用的所有其他本机函数。
您可以通过将其声明更改为
来修改此功能以接受新路径JNI_FN(MuPDFCore_saveAsInternal)(JNIEnv *env, jobject thiz, jstring jpath)
然后可以通过类似
的声明使Java端可以访问该函数private native int saveAsInternal(String path);
在班级MuPDFCore
。
在C代码中,您可以通过类似
的方式获取作为Java字符串传递的路径const char *new_path = NULL;
if (jpath != NULL) {
public static native boolean javascriptSupported();
new_path = (*env)->GetStringUTFChars(env, jpath, NULL);
}
希望有所帮助。