| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #include "mainwidget.h"
- #include <QApplication>
- 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<void>("addAction", "(Ljava/lang/String;)V", action.object<jstring>());
- // 获取当前 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<jobject>(),
- filter.object<jobject>()
- );
- }
- */
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- //registerUsbPermissionReceiver();
- MainWidget w;
- MainWidgetInstance=&w;
- w.show();
- return a.exec();
- }
|