diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts
index 8fbbeb5..89869f1 100644
--- a/android/app/build.gradle.kts
+++ b/android/app/build.gradle.kts
@@ -11,12 +11,12 @@ android {
ndkVersion = flutter.ndkVersion
compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
- jvmTarget = "1.8"
+ jvmTarget = "17"
}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 03c8219..7f0e0f3 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -24,6 +24,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/android/build.gradle.kts b/android/build.gradle.kts
index 1bf24c7..d0547d4 100644
--- a/android/build.gradle.kts
+++ b/android/build.gradle.kts
@@ -18,15 +18,21 @@ subprojects {
project.layout.buildDirectory.value(newSubprojectBuildDir)
}
- // Java ve Kotlin'i 1.8'e zorla
- tasks.withType().configureEach {
- sourceCompatibility = "1.8"
- targetCompatibility = "1.8"
- }
+ // Java ve Kotlin'i 17'ye zorla
+ afterEvaluate {
+ if (project.hasProperty("android")) {
+ configure {
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+ }
+ }
+ }
- tasks.withType().configureEach {
- compilerOptions {
- jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8)
+ tasks.withType().configureEach {
+ compilerOptions {
+ jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
+ }
}
}
}
diff --git a/lib/features/sender/presentation/providers/share_handler_provider.dart b/lib/features/sender/presentation/providers/share_handler_provider.dart
new file mode 100644
index 0000000..3773a57
--- /dev/null
+++ b/lib/features/sender/presentation/providers/share_handler_provider.dart
@@ -0,0 +1,31 @@
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:share_handler/share_handler.dart';
+import 'sender_providers.dart';
+
+final shareHandlerProvider = Provider((ref) {
+ final handler = ShareHandler.instance;
+
+ // Listen for background shares
+ handler.sharedMediaStream.listen((SharedMedia media) {
+ _handleMedia(media, ref);
+ });
+
+ // Check for initial share (app opened via share)
+ handler.getInitialSharedMedia().then((media) {
+ if (media != null) {
+ _handleMedia(media, ref);
+ }
+ });
+
+ return;
+});
+
+void _handleMedia(SharedMedia media, Ref ref) {
+ final content = media.content;
+ if (content != null && content.isNotEmpty) {
+ // If it's a URL or contains a URL, send it
+ if (content.startsWith('http')) {
+ ref.read(senderProvider.notifier).sendLink(content);
+ }
+ }
+}
diff --git a/lib/features/sender/presentation/screens/mobile_sender_screen.dart b/lib/features/sender/presentation/screens/mobile_sender_screen.dart
index 34447a1..3913676 100644
--- a/lib/features/sender/presentation/screens/mobile_sender_screen.dart
+++ b/lib/features/sender/presentation/screens/mobile_sender_screen.dart
@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../../core/theme/app_colors.dart';
import '../../../discovery/presentation/providers/discovery_providers.dart';
import '../providers/sender_providers.dart';
+import '../providers/share_handler_provider.dart';
class MobileSenderScreen extends ConsumerStatefulWidget {
const MobileSenderScreen({super.key});
@@ -14,6 +15,11 @@ class MobileSenderScreen extends ConsumerStatefulWidget {
class _MobileSenderScreenState extends ConsumerState {
final _urlController = TextEditingController();
+ @override
+ void initState() {
+ super.initState();
+ }
+
@override
void dispose() {
_urlController.dispose();
@@ -22,6 +28,9 @@ class _MobileSenderScreenState extends ConsumerState {
@override
Widget build(BuildContext context) {
+ // Initialize share handler
+ ref.watch(shareHandlerProvider);
+
final devicesAsync = ref.watch(discoveredDevicesProvider);
final senderState = ref.watch(senderProvider);
diff --git a/pubspec.lock b/pubspec.lock
index 9602f27..9cedd1b 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -744,14 +744,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.2.0"
- receive_sharing_intent:
- dependency: "direct main"
- description:
- name: receive_sharing_intent
- sha256: ec76056e4d258ad708e76d85591d933678625318e411564dcb9059048ca3a593
- url: "https://pub.dev"
- source: hosted
- version: "1.8.1"
record_use:
dependency: transitive
description:
@@ -776,6 +768,38 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.3"
+ share_handler:
+ dependency: "direct main"
+ description:
+ name: share_handler
+ sha256: "0a6d007f0e44fbee27164adcd159ecbc88238864313f4e5c58161cae2180328d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.0.25"
+ share_handler_android:
+ dependency: transitive
+ description:
+ name: share_handler_android
+ sha256: caf555b933dc72783aa37fef75688c7b86bd6f7bc17d80fbf585bc42f123cc8d
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.0.11"
+ share_handler_ios:
+ dependency: transitive
+ description:
+ name: share_handler_ios
+ sha256: cdc21f88f336a944157a8e9ceb191525cee3b082d6eb6c2082488e4f09dc3ece
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.0.15"
+ share_handler_platform_interface:
+ dependency: transitive
+ description:
+ name: share_handler_platform_interface
+ sha256: "7a4df95a87b326b2f07458d937f2281874567c364b7b7ebe4e7d50efaae5f106"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.0.6"
shared_preferences:
dependency: "direct main"
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 50e007b..cfdd9f0 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -39,13 +39,13 @@ dependencies:
media_kit: ^1.2.6
media_kit_video: ^2.0.1
media_kit_libs_video: ^1.0.7
- receive_sharing_intent: ^1.8.1
flutter_inappwebview: ^6.1.5
shared_preferences: ^2.5.5
google_fonts: ^8.1.0
flutter_svg: ^2.2.4
path_provider: ^2.1.5
dio: ^5.9.2
+ share_handler: ^0.0.25
dev_dependencies:
flutter_test: