Update check permission x02

This commit is contained in:
wengki81 2025-06-15 03:32:22 +08:00
parent f06ac061ca
commit 7b397e78bd

View File

@ -21,6 +21,7 @@ import com.dumon.plugin.geolocation.wifi.WifiPositioningManager
import com.dumon.plugin.geolocation.wifi.WifiScanResult import com.dumon.plugin.geolocation.wifi.WifiScanResult
import com.dumon.plugin.geolocation.fusion.SensorFusionManager import com.dumon.plugin.geolocation.fusion.SensorFusionManager
import com.dumon.plugin.geolocation.utils.PermissionUtils import com.dumon.plugin.geolocation.utils.PermissionUtils
import com.getcapacitor.annotation.PermissionCallback
import org.json.JSONArray import org.json.JSONArray
import org.json.JSONObject import org.json.JSONObject
@ -127,7 +128,8 @@ class DumonGeolocation : Plugin() {
@PluginMethod @PluginMethod
fun checkAndRequestPermissions(call: PluginCall) { fun checkAndRequestPermissions(call: PluginCall) {
requestAllPermissions(call, "checkAndRequestPermissions") // requestAllPermissions(call, "checkAndRequestPermissions")
requestAllPermissions(call, "onPermissionResult")
val locationStatus = PermissionUtils.getPermissionStatus( val locationStatus = PermissionUtils.getPermissionStatus(
ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
@ -208,6 +210,26 @@ class DumonGeolocation : Plugin() {
call.resolve() 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() { private fun emitPositionUpdate() {
val now = System.currentTimeMillis() val now = System.currentTimeMillis()
if (now - lastEmitTimestamp < emitIntervalMs) return if (now - lastEmitTimestamp < emitIntervalMs) return