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