main.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "mainwidget.h"
  2. #include <QApplication>
  3. MainWidget* MainWidgetInstance = nullptr;
  4. /*
  5. extern "C" JNIEXPORT void JNICALL
  6. Java_usb_UsbPermissionReceiver_nativeOnUsbPermissionGranted(JNIEnv *env, jobject, jobject usbDevice) {
  7. // 这里可以处理权限授予后的逻辑
  8. if(MainWidgetInstance)MainWidgetInstance->onUsbPermissionGranted(env, usbDevice);
  9. // 将UsbDevice转换为QAndroidJniObject以便进一步操作
  10. QAndroidJniObject device = QAndroidJniObject::fromLocalRef(usbDevice);
  11. // 执行打开串口等操作...
  12. }
  13. extern "C" JNIEXPORT void JNICALL
  14. Java_usb_UsbPermissionReceiver_nativeOnUsbPermissionDenied(JNIEnv *env, jobject, jobject usbDevice) {
  15. // 这里可以处理权限被拒绝后的逻辑
  16. if(MainWidgetInstance)MainWidgetInstance->onUsbPermissionDenied(env, usbDevice);
  17. // 将UsbDevice转换为QAndroidJniObject以便进一步操作
  18. QAndroidJniObject device = QAndroidJniObject::fromLocalRef(usbDevice);
  19. // 显示消息给用户或其他处理...
  20. }
  21. void registerUsbPermissionReceiver() {
  22. // 定义广播接收器的动作字符串
  23. QAndroidJniObject action = QAndroidJniObject::fromString("android.hardware.usb.action.USB_PERMISSION");
  24. // 创建广播接收器对象
  25. QAndroidJniObject receiver(
  26. "usb/UsbPermissionReceiver", "()V"
  27. );
  28. // 创建 IntentFilter 并添加动作
  29. QAndroidJniObject filter("android/content/IntentFilter", "()V");
  30. filter.callMethod<void>("addAction", "(Ljava/lang/String;)V", action.object<jstring>());
  31. // 获取当前 Activity 的上下文
  32. QAndroidJniObject activity = QtAndroid::androidActivity();
  33. if (!activity.isValid()) {
  34. qDebug() << "Failed to get Android activity.";
  35. return;
  36. }
  37. QAndroidJniObject context = activity.callObjectMethod("getApplicationContext", "()Landroid/content/Context;");
  38. if (!context.isValid()) {
  39. qDebug() << "Failed to get application context.";
  40. return;
  41. }
  42. // 注册广播接收器
  43. activity.callObjectMethod(
  44. "registerReceiver",
  45. "(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;",
  46. receiver.object<jobject>(),
  47. filter.object<jobject>()
  48. );
  49. }
  50. */
  51. int main(int argc, char *argv[])
  52. {
  53. QApplication a(argc, argv);
  54. //registerUsbPermissionReceiver();
  55. MainWidget w;
  56. MainWidgetInstance=&w;
  57. w.show();
  58. return a.exec();
  59. }