diff --git a/android/app/src/main/kotlin/com/lifegpc/ehf/MainActivity.kt b/android/app/src/main/kotlin/com/lifegpc/ehf/MainActivity.kt index ba1790f..b6ee64d 100644 --- a/android/app/src/main/kotlin/com/lifegpc/ehf/MainActivity.kt +++ b/android/app/src/main/kotlin/com/lifegpc/ehf/MainActivity.kt @@ -3,19 +3,21 @@ package com.lifegpc.ehf import android.app.Activity import android.content.Intent import android.os.Build +import android.os.Bundle import android.provider.Settings -import android.util.Log +import android.view.WindowInsets +import android.view.WindowInsetsController import android.view.WindowManager import com.lifegpc.ehf.annotation.ChannelMethod import com.lifegpc.ehf.eventbus.SAFAuthEvent import com.lifegpc.ehf.platform.ClipboardPlugin import com.lifegpc.ehf.platform.MethodChannelUtils import com.lifegpc.ehf.platform.SAFPlugin -import io.flutter.embedding.android.FlutterActivity +import io.flutter.embedding.android.FlutterFragmentActivity import io.flutter.embedding.engine.FlutterEngine import org.greenrobot.eventbus.EventBus -class MainActivity : FlutterActivity() { +class MainActivity : FlutterFragmentActivity() { override fun configureFlutterEngine(flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) @@ -56,6 +58,15 @@ class MainActivity : FlutterActivity() { } } + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + val lp=window.attributes + lp.layoutInDisplayCutoutMode=WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES + window.attributes=lp + } + } + @ChannelMethod(methodName = "enableProtect") @Suppress("unused") private fun enableFlagSecure() { @@ -68,6 +79,29 @@ class MainActivity : FlutterActivity() { window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) } + @ChannelMethod(methodName = "setFullscreenMode") + @Suppress("unused") + private fun setFullscreenMode(value: Boolean) { + // api 23 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + val windowController = window.insetsController + if (value) { + windowController?.hide(WindowInsets.Type.statusBars()) + windowController?.systemBarsBehavior = + WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + } else { + windowController?.show(WindowInsets.Type.statusBars()) + } + } else { + @Suppress("DEPRECATION") + if (value){ + window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) + }else{ + window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) + } + } + } + @ChannelMethod(methodName = "deviceName") @Suppress("unused") private fun getDeviceName(): String { diff --git a/lib/platform/display.dart b/lib/platform/display.dart index 6d5352e..216cf9b 100644 --- a/lib/platform/display.dart +++ b/lib/platform/display.dart @@ -28,4 +28,14 @@ class Display { return false; } } + + Future setFullscreenMode(bool fullscreenMode) async{ + try{ + await platform.invokeMethod("setScreenMode",fullscreenMode); + return true; + }catch(e){ + _log.warning("Failed to set screen mode",e); + return false; + } + } }