在阅读Android中,nosuchmethoderror与JNI在QT上与JNI
NoSuchMethodError with JNI on Qt during reading Shared Preferences in Android
我想使用Android中的共享首选项来保存用户ID,同时用户删除了该应用程序。为此,我正在使用JNI/QT5.12,但是在阅读ID时,我会遇到错误。
https://developer.android.com/training/data-storage/shared-preferences.html
阅读:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.integer.saved_high_score_default_key);
int highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue);
jni:
jint mp = QAndroidJniObject::getStaticField<jint>("android/content/Context", "MODE_PRIVATE");
QAndroidJniObject name = QAndroidJniObject::fromString("test");
QAndroidJniObject activity = QtAndroid::androidActivity();
QAndroidJniObject sharedPref = activity.callObjectMethod("getPreferences", "(I)Landroid/content/SharedPreferences;", mp);
jint defId = 2;
// this line throws
jint id = sharedPref.callMethod<jint>("getInt","(Ljava/lang/String;I)I;", name.object<jstring>(), defId);
stacktrace:
W/System.err(10285): java.lang.NoSuchMethodError: no non-static method "Landroid/app/SharedPreferencesImpl;.getInt(Ljava/lang/String;I)I;"
W/System.err(10285): at org.qtproject.qt5.android.QtNative.startQtApplication(Native Method)
W/System.err(10285): at org.qtproject.qt5.android.QtNative$6.run(QtNative.java:365)
W/System.err(10285): at org.qtproject.qt5.android.QtThread$1.run(QtThread.java:61)
W/System.err(10285): at java.lang.Thread.run(Thread.java:818)
我也不理解语义问题:警告:功能的实例化Qandroidjniobject :: CallMethod此处需要,但是没有漏洞可用
有人知道这里怎么了吗?thxs ...
此失败是一件很小的事情:"(Ljava/lang/String;I)I;"
中的额外的半隆 - 应该是 "(Ljava/lang/String;I)I"
(最后没有半隆)。
关于警告:您可以忽略它们,它只是代码模型无法完全理解这些方法的定义。
相关文章:
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用Qt C++计算类似Git的SHA1哈希
- Qt focusObjectChanged example?
- 如何在cpp文件之间切换窗口?在Qt中
- 通过JNI传递数据数组的最快方法是什么
- 无法将DefineClass(JNI)与Qt资源一起使用
- 在阅读Android中,nosuchmethoderror与JNI在QT上与JNI
- Qt for Android:Jni - 不幸的是,应用程序已停止
- 通过在 qt 中从 c++ JNI 发送字符串来显示 Android 中的 Toast
- 安卓系统上的Qt蓝牙.通过抽象类上的jni调用java类
- 如何在Qt中使用JNI创建字符串数组