qiuxiang / flutter-android-window

A flutter plugin allows you to create native android floating window.
MIT License
62 stars 19 forks source link

怎么在open时传递参数 #15

Closed VenusCao closed 2 years ago

VenusCao commented 2 years ago

或者说AndroidWindowApp怎么和app通信

VenusCao commented 2 years ago

EventBus和Get.find 都无法通信

qiuxiang commented 2 years ago

看 example,要用提供的方法进行通信,走原生通道,dart 实现的都不行,因为 app 和 android_window 运行在不同的环境里。

app 发送消息: https://github.com/qiuxiang/flutter-android-window/blob/bd2fd41d924037126bfc95fb56320f11b9e5cc4b/example/lib/main.dart#L81-L84

app 接收消息: https://github.com/qiuxiang/flutter-android-window/blob/bd2fd41d924037126bfc95fb56320f11b9e5cc4b/example/lib/main.dart#L29-L36

android_window 的通信同理。

VenusCao commented 2 years ago

看到了,谢谢。 还有个问题就是用模拟器调用open方法WindowService会crash,真机没有问题 看能不能在哪个地方try catch一下

E/AndroidRuntime( 7969): java.lang.RuntimeException: Unable to start service qiuxiang.android_window.WindowService@d782bd3 with Intent { cmp=com.cjx.testapp/qiuxiang.android_window.WindowService (has extras) }: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? E/AndroidRuntime( 7969): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3376) E/AndroidRuntime( 7969): at android.app.ActivityThread.-wrap21(ActivityThread.java) E/AndroidRuntime( 7969): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1587) E/AndroidRuntime( 7969): at android.os.Handler.dispatchMessage(Handler.java:102) E/AndroidRuntime( 7969): at android.os.Looper.loop(Looper.java:154) E/AndroidRuntime( 7969): at android.app.ActivityThread.main(ActivityThread.java:6190) E/AndroidRuntime( 7969): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime( 7969): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:892) E/AndroidRuntime( 7969): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782) E/AndroidRuntime( 7969): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? E/AndroidRuntime( 7969): at android.view.ViewRootImpl.setView(ViewRootImpl.java:679) E/AndroidRuntime( 7969): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342) E/AndroidRuntime( 7969): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93) E/AndroidRuntime( 7969): at qiuxiang.android_window.AndroidWindow.open(AndroidWindow.kt:56) E/AndroidRuntime( 7969): at qiuxiang.android_window.WindowService.onStartCommand(WindowService.kt:36) E/AndroidRuntime( 7969): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3359) E/AndroidRuntime( 7969): ... 8 more

VenusCao commented 2 years ago

android sdk低版本 WindowManager.LayoutParams.TYPE_TOAST问题,改成 WindowManager.LayoutParams.TYPE_SYSTEM_ALERT之类的解决