gpt4 book ai didi

android - 迁移到 Android 11 后无法绑定(bind)到服务

转载 作者:行者123 更新时间:2023-12-04 23:54:12 25 4
gpt4 key购买 nike

我有两个应用程序。一种前台服务,不使用 Android 11 中引入的任何权限(相机、位置等)。我有连接到我的服务的客户端应用程序。在 android 8 中,此连接有效,但是在 Android 11 环境中调用 context.BindService() 时总是返回 false。
这是服务 list :

<service
android:name="com.mypackage.myService"
android:enabled="true"
android:exported="true"
tools:ignore="ExportedService">
</service>
这是我在客户端使用的连接功能:
fun connect(context: Context): Boolean {
Intent().also {
it.component = ComponentName(
context.getString(R.string.middleware_package),
context.getString(R.string.middleware_service)
)
val bound = context.bindService(it, connection, Context.BIND_AUTO_CREATE)

if (!bound) {
Log.e(LOG_TAG, "Unable to connect to service. Is the service installed?")
}
return bound
}
}
在 bindService() 的 android 文档中,它声明它将返回 false “如果系统找不到服务或者如果您的客户端没有绑定(bind)到它的权限”。由于我的服务不使用任何新的 android 11 权限,我假设它现在没有正确找到服务?怎么会这样?

最佳答案

您需要添加 <queries>元素添加到客户端应用程序的 list 中,标识服务应用程序。
this sample app应用程序 ID 为 com.commonsware.android.r.embed.server ,我有绑定(bind)服务。
this sample client app ,我将这些行添加到 list 中以允许客户端应用程序绑定(bind)到服务应用程序:

  <queries>
<package android:name="com.commonsware.android.r.embed.server" />
</queries>

关于android - 迁移到 Android 11 后无法绑定(bind)到服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67114596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com