Не удалось вызвать функцию Java из Qt C++.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Не удалось вызвать функцию Java из Qt C++.

Сообщение Anonymous »

Кто-нибудь может помочь решить проблему: я создаю приложение для Android, и мне нужно вызвать функции Java из Qt C++, я тестирую, используя приведенную ниже информацию.
пожалуйста см. файл CMakeLists.txt ниже.

Код: Выделить всё

cmake_minimum_required(VERSION 3.16)

project(testing VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 6.5 REQUIRED COMPONENTS Quick Widgets Core)

qt_standard_project_setup(REQUIRES 6.5)

qt_add_executable(apptesting
main.cpp
)

qt_add_qml_module(apptesting
URI testing
VERSION 1.0
QML_FILES
Main.qml
RESOURCES
android/AndroidManifest.xml
android/build.gradle
android/res/values/libs.xml
android/res/xml/qtprovider_paths.xml
android/gradle/wrapper/gradle-wrapper.jar
android/gradle/wrapper/gradle-wrapper.properties
android/gradle.properties
android/gradlew
android/gradlew.bat
android/src/org/qtproject/example/file/MathOperations.java

SOURCES
mathbridge.h mathbridge.cpp
)

# Set Android source directory
set(android_package_dir "${CMAKE_SOURCE_DIR}/android")

# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
set_target_properties(apptesting PROPERTIES
#    MACOSX_BUNDLE_GUI_IDENTIFIER com.example.apptesting
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)

target_link_libraries(apptesting
PRIVATE Qt6::Quick
PRIVATE Qt6::Widgets
PRIVATE Qt6::Core
)

include(GNUInstallDirs)
install(TARGETS apptesting
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
Java-файл

Код: Выделить всё

package org.qtproject.example.file;

import android.app.Activity;
import android.widget.Toast;
import org.qtproject.qt.android.QtNative;

public class MathOperations {
public static String add() {
return "This is a test for addition";
}

public static String multiply() {
return "This is a test for multiplication";
}
}
Ниже приведен мой код реализации Qt C++

Код: Выделить всё

#include "mathbridge.h"
#include 
#include 

QString MathBridge::addNumbers() {
QJniObject result = QJniObject::callStaticObjectMethod(
"org/qtproject/example/file/MathOperations", // Fully qualified Java class name
"add",                                             // Java method name
"()Ljava/lang/String;"                             // JNI method signature
);

if (result.isValid()) {
QString value = result.toString();
qDebug() 

Подробнее здесь: [url]https://stackoverflow.com/questions/79224594/failed-to-call-java-function-from-qt-c[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»