feat: add permission screen shown before main screen

This commit is contained in:
fiatcode 2026-04-30 16:11:45 +07:00
parent a7a6a6a82d
commit 650a6efeca
No known key found for this signature in database
6 changed files with 562 additions and 1 deletions

View file

@ -7,6 +7,7 @@
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<application
android:label="traccar_client"

View file

@ -87,6 +87,9 @@ class BridgeModule : FlutterPlugin, MethodChannel.MethodCallHandler {
val limit = (call.arguments as? Number)?.toInt() ?: 100
fetchLogs(limit, result)
}
"openBatteryOptimizationSettings" -> {
openBatteryOptimizationSettings(result)
}
else -> result.notImplemented()
}
}
@ -189,4 +192,27 @@ class BridgeModule : FlutterPlugin, MethodChannel.MethodCallHandler {
}
}.start()
}
private fun openBatteryOptimizationSettings(result: MethodChannel.Result) {
try {
val packageName = context?.packageName ?: ""
val intent = android.content.Intent("android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS").apply {
data = android.net.Uri.parse("package:$packageName")
}
intent.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK)
context?.startActivity(intent)
result.success(true)
} catch (e: Exception) {
// Fallback to general battery settings
try {
val intent = android.content.Intent("android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS").apply {
}
intent.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK)
context?.startActivity(intent)
result.success(true)
} catch (e2: Exception) {
result.success(false)
}
}
}
}