#include "mainwidget.h" #include MainWidget* MainWidgetInstance = nullptr; /* extern "C" JNIEXPORT void JNICALL Java_usb_UsbPermissionReceiver_nativeOnUsbPermissionGranted(JNIEnv *env, jobject, jobject usbDevice) { // 这里可以处理权限授予后的逻辑 if(MainWidgetInstance)MainWidgetInstance->onUsbPermissionGranted(env, usbDevice); // 将UsbDevice转换为QAndroidJniObject以便进一步操作 QAndroidJniObject device = QAndroidJniObject::fromLocalRef(usbDevice); // 执行打开串口等操作... } extern "C" JNIEXPORT void JNICALL Java_usb_UsbPermissionReceiver_nativeOnUsbPermissionDenied(JNIEnv *env, jobject, jobject usbDevice) { // 这里可以处理权限被拒绝后的逻辑 if(MainWidgetInstance)MainWidgetInstance->onUsbPermissionDenied(env, usbDevice); // 将UsbDevice转换为QAndroidJniObject以便进一步操作 QAndroidJniObject device = QAndroidJniObject::fromLocalRef(usbDevice); // 显示消息给用户或其他处理... } void registerUsbPermissionReceiver() { // 定义广播接收器的动作字符串 QAndroidJniObject action = QAndroidJniObject::fromString("android.hardware.usb.action.USB_PERMISSION"); // 创建广播接收器对象 QAndroidJniObject receiver( "usb/UsbPermissionReceiver", "()V" ); // 创建 IntentFilter 并添加动作 QAndroidJniObject filter("android/content/IntentFilter", "()V"); filter.callMethod("addAction", "(Ljava/lang/String;)V", action.object()); // 获取当前 Activity 的上下文 QAndroidJniObject activity = QtAndroid::androidActivity(); if (!activity.isValid()) { qDebug() << "Failed to get Android activity."; return; } QAndroidJniObject context = activity.callObjectMethod("getApplicationContext", "()Landroid/content/Context;"); if (!context.isValid()) { qDebug() << "Failed to get application context."; return; } // 注册广播接收器 activity.callObjectMethod( "registerReceiver", "(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;", receiver.object(), filter.object() ); } */ int main(int argc, char *argv[]) { QApplication a(argc, argv); //registerUsbPermissionReceiver(); MainWidget w; MainWidgetInstance=&w; w.show(); return a.exec(); }