Fix tile permission
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package io.nekohasekai.sfa.bg
|
||||
|
||||
import android.app.KeyguardManager
|
||||
import android.content.Context
|
||||
import android.service.quicksettings.Tile
|
||||
import android.service.quicksettings.TileService
|
||||
import androidx.annotation.RequiresApi
|
||||
@@ -32,15 +34,20 @@ class TileService : TileService(), ServiceConnection.Callback {
|
||||
}
|
||||
|
||||
override fun onClick() {
|
||||
val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
|
||||
if (keyguardManager.isKeyguardLocked) {
|
||||
unlockAndRun {
|
||||
toggleService()
|
||||
}
|
||||
} else {
|
||||
toggleService()
|
||||
}
|
||||
}
|
||||
|
||||
private fun toggleService() {
|
||||
when (connection.status) {
|
||||
Status.Stopped -> {
|
||||
BoxService.start()
|
||||
}
|
||||
|
||||
Status.Started -> {
|
||||
BoxService.stop()
|
||||
}
|
||||
|
||||
Status.Stopped -> BoxService.start()
|
||||
Status.Started -> BoxService.stop()
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package io.nekohasekai.sfa.ui
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.KeyguardManager
|
||||
import android.content.Intent
|
||||
import android.content.pm.ShortcutManager
|
||||
import android.os.Build
|
||||
@@ -43,13 +44,39 @@ class ShortcutActivity : Activity(), ServiceConnection.Callback {
|
||||
)
|
||||
finish()
|
||||
} else {
|
||||
connection.connect()
|
||||
if (Build.VERSION.SDK_INT >= 25) {
|
||||
getSystemService<ShortcutManager>()?.reportShortcutUsed("toggle")
|
||||
val keyguardManager = getSystemService<KeyguardManager>()
|
||||
if (keyguardManager?.isKeyguardLocked == true) {
|
||||
if (Build.VERSION.SDK_INT >= 26) {
|
||||
keyguardManager.requestDismissKeyguard(this, object : KeyguardManager.KeyguardDismissCallback() {
|
||||
override fun onDismissSucceeded() {
|
||||
super.onDismissSucceeded()
|
||||
connectAndToggle()
|
||||
}
|
||||
override fun onDismissCancelled() {
|
||||
super.onDismissCancelled()
|
||||
finish()
|
||||
}
|
||||
override fun onDismissError() {
|
||||
super.onDismissError()
|
||||
finish()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
finish()
|
||||
}
|
||||
} else {
|
||||
connectAndToggle()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun connectAndToggle() {
|
||||
connection.connect()
|
||||
if (Build.VERSION.SDK_INT >= 25) {
|
||||
getSystemService<ShortcutManager>()?.reportShortcutUsed("toggle")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onServiceStatusChanged(status: Status) {
|
||||
when (status) {
|
||||
Status.Started -> BoxService.stop()
|
||||
|
||||
Reference in New Issue
Block a user