diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index d3a3714..f052020 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -24,7 +24,11 @@ - + + + + + diff --git a/android/app/src/main/kotlin/com/example/maps_bookmarks/MainActivity.kt b/android/app/src/main/kotlin/com/example/maps_bookmarks/MainActivity.kt index b15aaa2..0f2debc 100644 --- a/android/app/src/main/kotlin/com/example/maps_bookmarks/MainActivity.kt +++ b/android/app/src/main/kotlin/com/example/maps_bookmarks/MainActivity.kt @@ -1,5 +1,44 @@ package com.example.maps_bookmarks +import android.content.Intent +import android.os.Bundle import io.flutter.embedding.android.FlutterActivity +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.plugin.common.MethodChannel -class MainActivity : FlutterActivity() +class MainActivity: FlutterActivity() { + private var sharedText: String? = null + private val CHANNEL = "app.channel.shared.data" + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + handleIntent(intent) + } + + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + setIntent(intent) + handleIntent(intent) + } + + private fun handleIntent(intent: Intent) { + val action = intent.action + val type = intent.type + + if (Intent.ACTION_SEND == action && "text/plain" == type) { + sharedText = intent.getStringExtra(Intent.EXTRA_TEXT) + } + } + + override fun configureFlutterEngine(flutterEngine: FlutterEngine) { + MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL) + .setMethodCallHandler { call, result -> + if (call.method == "getSharedText") { + result.success(sharedText) + sharedText = null + } else { + result.notImplemented() + } + } + } +}