diff --git a/android/build.gradle b/android/build.gradle index 039776f..297bd30 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,22 +2,21 @@ group 'com.nankai.flutter_nearby_connections' version '1.0-SNAPSHOT' buildscript { - ext.kotlin_version = '1.7.10' + ext.kotlin_version = '2.0.20' repositories { google() - jcenter() + mavenCentral() } - dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:8.2.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } -rootProject.allprojects { +allprojects { repositories { google() - jcenter() + mavenCentral() } } @@ -25,27 +24,41 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { + namespace "com.nankai.flutter_nearby_connections" + compileSdkVersion 34 - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } defaultConfig { - minSdkVersion 16 + minSdkVersion 24 targetSdkVersion 34 } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + lintOptions { disable 'InvalidPackage' } + + kotlinOptions { + jvmTarget = "1.8" + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { - api 'com.google.android.gms:play-services-nearby:17.0.0' + api 'com.google.android.gms:play-services-nearby:18.5.0' implementation 'com.google.code.gson:gson:2.10.1' - implementation 'com.google.android.gms:play-services-location:17.1.0' - implementation 'androidx.core:core-ktx:1.9.0' - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'com.google.android.gms:play-services-location:21.0.1' + implementation 'androidx.core:core-ktx:1.12.0' + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } + repositories { mavenCentral() } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 01a286e..348c409 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index b47af3a..824f25f 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,30 +1,38 @@ + + + + + + + + + + + + + + - - - - - - + - - + + - - + android:exported="false" + android:foregroundServiceType="connectedDevice" /> diff --git a/android/src/main/kotlin/com/nankai/flutter_nearby_connections/FlutterNearbyConnectionsPlugin.kt b/android/src/main/kotlin/com/nankai/flutter_nearby_connections/FlutterNearbyConnectionsPlugin.kt index 54f268c..286ff99 100644 --- a/android/src/main/kotlin/com/nankai/flutter_nearby_connections/FlutterNearbyConnectionsPlugin.kt +++ b/android/src/main/kotlin/com/nankai/flutter_nearby_connections/FlutterNearbyConnectionsPlugin.kt @@ -17,7 +17,6 @@ import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel.MethodCallHandler import io.flutter.plugin.common.MethodChannel.Result -import io.flutter.plugin.common.PluginRegistry.Registrar import java.lang.Exception import kotlin.system.exitProcess @@ -56,20 +55,15 @@ class FlutterNearbyConnectionsPlugin : FlutterPlugin, MethodCallHandler, Activit private var isBind = false override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { - channel = MethodChannel(flutterPluginBinding.flutterEngine.dartExecutor, viewTypeId) + channel = MethodChannel(flutterPluginBinding.binaryMessenger, viewTypeId) channel.setMethodCallHandler(this) } companion object { private const val viewTypeId = "flutter_nearby_connections" - - @JvmStatic - fun registerWith(registrar: Registrar) { - val channel = MethodChannel(registrar.messenger(), viewTypeId) - channel.setMethodCallHandler(FlutterNearbyConnectionsPlugin()) - } } + override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) { when (call.method) { initNearbyService -> { @@ -164,6 +158,5 @@ class FlutterNearbyConnectionsPlugin : FlutterPlugin, MethodCallHandler, Activit binding = null } - override fun onDetachedFromActivityForConfigChanges() { - } + override fun onDetachedFromActivityForConfigChanges() {} } diff --git a/android/src/main/kotlin/com/nankai/flutter_nearby_connections/LocationHelper.kt b/android/src/main/kotlin/com/nankai/flutter_nearby_connections/LocationHelper.kt index 0b31df8..b4d85a9 100644 --- a/android/src/main/kotlin/com/nankai/flutter_nearby_connections/LocationHelper.kt +++ b/android/src/main/kotlin/com/nankai/flutter_nearby_connections/LocationHelper.kt @@ -82,8 +82,13 @@ class LocationHelper(private val activity: Activity) : PluginRegistry.ActivityRe } private fun requestLocationEnable() { + if (mLocationSettingsRequest == null) { + initiateLocationServiceRequest() // Ensure it's initialized + } + val task = LocationServices.getSettingsClient(activity) - .checkLocationSettings(mLocationSettingsRequest) + .checkLocationSettings(mLocationSettingsRequest!!) // Force unwrap safely + task.addOnCompleteListener { t -> try { t.getResult(ApiException::class.java) @@ -96,7 +101,7 @@ class LocationHelper(private val activity: Activity) : PluginRegistry.ActivityRe LocationSettingsStatusCodes.RESOLUTION_REQUIRED -> try { val resolvableApiException = ex as ResolvableApiException resolvableApiException - .startResolutionForResult(activity, LOCATION_ENABLE_REQUEST) + .startResolutionForResult(activity, LOCATION_ENABLE_REQUEST) } catch (e: IntentSender.SendIntentException) { result?.error("LOCATION_SERVICE_ERROR", e.message, null) } @@ -107,4 +112,5 @@ class LocationHelper(private val activity: Activity) : PluginRegistry.ActivityRe } } } -} \ No newline at end of file + +}