From 7b397e78bdfe818ac1b7c9dabf89ae71277cfa56 Mon Sep 17 00:00:00 2001 From: wengki81 Date: Sun, 15 Jun 2025 03:32:22 +0800 Subject: [PATCH] Update check permission x02 --- .../plugin/geolocation/DumonGeolocation.kt | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt b/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt index b29da94..aa92377 100644 --- a/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt +++ b/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt @@ -21,6 +21,7 @@ import com.dumon.plugin.geolocation.wifi.WifiPositioningManager import com.dumon.plugin.geolocation.wifi.WifiScanResult import com.dumon.plugin.geolocation.fusion.SensorFusionManager import com.dumon.plugin.geolocation.utils.PermissionUtils +import com.getcapacitor.annotation.PermissionCallback import org.json.JSONArray import org.json.JSONObject @@ -127,7 +128,8 @@ class DumonGeolocation : Plugin() { @PluginMethod fun checkAndRequestPermissions(call: PluginCall) { - requestAllPermissions(call, "checkAndRequestPermissions") +// requestAllPermissions(call, "checkAndRequestPermissions") + requestAllPermissions(call, "onPermissionResult") val locationStatus = PermissionUtils.getPermissionStatus( ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) @@ -208,6 +210,26 @@ class DumonGeolocation : Plugin() { call.resolve() } + @PermissionCallback + private fun onPermissionResult(call: PluginCall) { + val locationStatus = PermissionUtils.getPermissionStatus( + ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) + ) + val wifiStatus = PermissionUtils.getPermissionStatus( + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + ActivityCompat.checkSelfPermission(context, Manifest.permission.NEARBY_WIFI_DEVICES) + else + PackageManager.PERMISSION_GRANTED + ) + + val result = JSObject().apply { + put("location", locationStatus) + put("wifi", wifiStatus) + } + + call.resolve(result) + } + private fun emitPositionUpdate() { val now = System.currentTimeMillis() if (now - lastEmitTimestamp < emitIntervalMs) return