@@ -106,12 +106,9 @@ class ClipshareClipboardListenerPlugin : FlutterPlugin, MethodCallHandler,
106106 ).daemon(false ).processNameSuffix(" clipshare-listening-service" )
107107 Log .d(TAG , " applicationId: ${config.applicationId} " )
108108 Shizuku .addRequestPermissionResultListener(this );
109- currentEnv = getCurrentEnvironment()
110109 instance = this
111110 ClipboardListener .init (this , context)
112- ClipboardListener .instance.addObserver(this )
113111 channel.setMethodCallHandler(this )
114- Log .d(TAG , " currentEnv $currentEnv " )
115112 initClipboardSourceShizukuService()
116113 }
117114
@@ -156,6 +153,9 @@ class ClipshareClipboardListenerPlugin : FlutterPlugin, MethodCallHandler,
156153 // region Flutter Method Channel Events
157154
158155 private fun onStartListeningCalled (call : MethodCall , result : Result ) {
156+ currentEnv = getCurrentEnvironment()
157+ Log .d(TAG , " currentEnv $currentEnv " )
158+ ClipboardListener .instance.addObserver(this )
159159 val envStr = call.argument<String >(" env" )
160160 val wayStr = call.argument<String >(" way" )
161161 var env: EnvironmentType ? = null
@@ -400,8 +400,9 @@ class ClipshareClipboardListenerPlugin : FlutterPlugin, MethodCallHandler,
400400 }
401401
402402 private fun checkClipboardPermission (call : MethodCall , result : Result ) {
403- if (currentEnv != EnvironmentType .root && currentEnv != EnvironmentType .shizuku) {
403+ if (currentEnv != null && currentEnv != EnvironmentType .root && currentEnv != EnvironmentType .shizuku) {
404404 result.success(false )
405+ return
405406 }
406407 commandRunnerScope.launch {
407408 if (commandRunnerService == null ) {
@@ -426,12 +427,12 @@ class ClipshareClipboardListenerPlugin : FlutterPlugin, MethodCallHandler,
426427 }
427428
428429 private fun requestClipboardPermission (call : MethodCall , result : Result ) {
429-
430- if (currentEnv != EnvironmentType .root && currentEnv != EnvironmentType .shizuku) {
430+ if (currentEnv != null && currentEnv != EnvironmentType .root && currentEnv != EnvironmentType .shizuku) {
431431 result.success(false )
432+ return
432433 }
433434 commandRunnerScope.launch {
434- if (currentEnv == EnvironmentType .shizuku && commandRunnerService == null ) {
435+ if (commandRunnerService == null ) {
435436 initCommandRunnerService()
436437 waitCommandRunnerService()
437438 }
@@ -599,6 +600,7 @@ class ClipshareClipboardListenerPlugin : FlutterPlugin, MethodCallHandler,
599600 }
600601
601602 private fun stopListening () {
603+ ClipboardListener .instance.removeObserver(this )
602604 val serviceIntent = Intent (context, ForegroundService ::class .java)
603605 listening = false
604606 stopClipboardSourceService()
0 commit comments