Skip to content

Commit 64ddbda

Browse files
committed
feat: compat higher version wechat
1 parent 265b3d9 commit 64ddbda

File tree

6 files changed

+23
-14
lines changed

6 files changed

+23
-14
lines changed

app/src/main/AndroidManifest.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
</provider>
118118

119119
<service
120-
android:name=".service.A11yService"
120+
android:name="com.google.android.accessibility.selecttospeak.SelectToSpeakService"
121121
android:exported="false"
122122
android:label="@string/app_name"
123123
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.google.android.accessibility.selecttospeak
2+
3+
import li.songe.gkd.service.A11yService
4+
5+
// https://github.com/ven-coder/Assists
6+
// https://github.com/ven-coder/Assists/issues/12#issuecomment-2684469065
7+
class SelectToSpeakService : A11yService()

app/src/main/kotlin/li/songe/gkd/App.kt

+1-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import li.songe.gkd.permission.shizukuOkState
2525
import li.songe.gkd.service.A11yService
2626
import li.songe.gkd.shizuku.initShizuku
2727
import li.songe.gkd.util.SafeR
28-
import li.songe.gkd.util.componentName
2928
import li.songe.gkd.util.initAppState
3029
import li.songe.gkd.util.initFolder
3130
import li.songe.gkd.util.initStore
@@ -144,9 +143,8 @@ private fun getA11yServiceEnabled(): Boolean {
144143
if (value.isNullOrEmpty()) return false
145144
val colonSplitter = TextUtils.SimpleStringSplitter(':')
146145
colonSplitter.setString(value)
147-
val name = A11yService::class.componentName
148146
while (colonSplitter.hasNext()) {
149-
if (ComponentName.unflattenFromString(colonSplitter.next()) == name) {
147+
if (ComponentName.unflattenFromString(colonSplitter.next()) == A11yService.a11yComponentName) {
150148
return true
151149
}
152150
}

app/src/main/kotlin/li/songe/gkd/MainActivity.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ fun Activity.navToMainActivity() {
170170

171171
@Suppress("DEPRECATION")
172172
private fun updateServiceRunning() {
173+
A11yService.isRunning.value = A11yService.instance != null
173174
val list = try {
174175
val manager = app.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
175176
manager.getRunningServices(Int.MAX_VALUE) ?: emptyList()
@@ -181,7 +182,6 @@ private fun updateServiceRunning() {
181182
return list.any { it.service.className == cls.jvmName }
182183
}
183184
ManageService.isRunning.value = checkRunning(ManageService::class)
184-
A11yService.isRunning.value = checkRunning(A11yService::class)
185185
FloatingService.isRunning.value = checkRunning(FloatingService::class)
186186
ScreenshotService.isRunning.value = checkRunning(ScreenshotService::class)
187187
HttpService.isRunning.value = checkRunning(HttpService::class)

app/src/main/kotlin/li/songe/gkd/service/A11yService.kt

+7-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import android.view.WindowManager
1818
import android.view.accessibility.AccessibilityEvent
1919
import com.blankj.utilcode.util.LogUtils
2020
import com.blankj.utilcode.util.ScreenUtils
21+
import com.google.android.accessibility.selecttospeak.SelectToSpeakService
2122
import kotlinx.coroutines.CoroutineScope
2223
import kotlinx.coroutines.Dispatchers
2324
import kotlinx.coroutines.Job
@@ -51,6 +52,7 @@ import li.songe.gkd.util.OnCreate
5152
import li.songe.gkd.util.OnDestroy
5253
import li.songe.gkd.util.UpdateTimeOption
5354
import li.songe.gkd.util.checkSubsUpdate
55+
import li.songe.gkd.util.componentName
5456
import li.songe.gkd.util.launchTry
5557
import li.songe.gkd.util.map
5658
import li.songe.gkd.util.showActionToast
@@ -64,7 +66,7 @@ import java.util.concurrent.Executors
6466
import kotlin.coroutines.resume
6567
import kotlin.coroutines.suspendCoroutine
6668

67-
class A11yService : AccessibilityService(), OnCreate, OnA11yConnected, OnA11yEvent, OnDestroy {
69+
open class A11yService : AccessibilityService(), OnCreate, OnA11yConnected, OnA11yEvent, OnDestroy {
6870
override fun onCreate() {
6971
super.onCreate()
7072
onCreated()
@@ -103,6 +105,10 @@ class A11yService : AccessibilityService(), OnCreate, OnA11yConnected, OnA11yEve
103105
}
104106

105107
companion object {
108+
109+
val a11yComponentName by lazy { SelectToSpeakService::class.componentName }
110+
val a11yClsName by lazy { a11yComponentName.flattenToShortString() }
111+
106112
internal var weakInstance = WeakReference<A11yService>(null)
107113
val instance: A11yService?
108114
get() = weakInstance.get()

app/src/main/kotlin/li/songe/gkd/service/GkdTileService.kt

+6-8
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import li.songe.gkd.permission.writeSecureSettingsState
2020
import li.songe.gkd.util.OnChangeListen
2121
import li.songe.gkd.util.OnDestroy
2222
import li.songe.gkd.util.OnTileClick
23-
import li.songe.gkd.util.componentName
2423
import li.songe.gkd.util.launchTry
2524
import li.songe.gkd.util.storeFlow
2625
import li.songe.gkd.util.toast
@@ -122,12 +121,12 @@ fun switchA11yService() = appScope.launchTry(Dispatchers.IO) {
122121
}
123122
val names = getServiceNames()
124123
enableA11yService()
125-
if (names.contains(a11yClsName)) { // 当前无障碍异常, 重启服务
126-
names.remove(a11yClsName)
124+
if (names.contains(A11yService.a11yClsName)) { // 当前无障碍异常, 重启服务
125+
names.remove(A11yService.a11yClsName)
127126
updateServiceNames(names)
128127
delay(500)
129128
}
130-
names.add(a11yClsName)
129+
names.add(A11yService.a11yClsName)
131130
updateServiceNames(names)
132131
delay(500)
133132
// https://github.com/orgs/gkd-kit/discussions/799
@@ -150,15 +149,15 @@ fun fixRestartService() = appScope.launchTry(Dispatchers.IO) {
150149
// 3. 有写入系统设置权限
151150
if (!A11yService.isRunning.value && storeFlow.value.enableService && writeSecureSettingsState.updateAndGet()) {
152151
val names = getServiceNames()
153-
val a11yBroken = names.contains(a11yClsName)
152+
val a11yBroken = names.contains(A11yService.a11yClsName)
154153
if (a11yBroken) {
155154
// 无障碍出现故障, 重启服务
156-
names.remove(a11yClsName)
155+
names.remove(A11yService.a11yClsName)
157156
updateServiceNames(names)
158157
// 必须等待一段时间, 否则概率不会触发系统重启无障碍服务
159158
delay(500)
160159
}
161-
names.add(a11yClsName)
160+
names.add(A11yService.a11yClsName)
162161
updateServiceNames(names)
163162
delay(500)
164163
if (!A11yService.isRunning.value) {
@@ -171,4 +170,3 @@ fun fixRestartService() = appScope.launchTry(Dispatchers.IO) {
171170
}
172171
}
173172

174-
val a11yClsName by lazy { A11yService::class.componentName.flattenToShortString() }

0 commit comments

Comments
 (0)