【发布时间】:2022-01-17 16:39:36
【问题描述】:
我知道这个问题已经问了很多次了,但我想,我尝试了所有接受的答案,但它并没有解决我的问题。我可能会遗漏一些东西,对服务和这些意图不熟悉。
我有两个应用,其中一个需要调用第二个实现的服务。
在我的应用被调用时,我在清单中声明了这一点:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.myapp">
<application
android:name=".MyApplication">
<service
android:name="com.myapp.SynchronizationService"
android:exported="true"
android:enabled="true" >
</service>
</application>
</manifest>
我的服务声明如下:
package com.myapp;
/**
* Sync service
*/
public class SynchronizationService extends Service {
@Override
public void onCreate() {
super.onCreate();
initSync();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
private void initSync() {
//do some work
}
}
然后,在我调用服务的应用程序中,我声明了这一点:
val i = Intent().apply {
component = ComponentName("com.myapp", "com.myapp.SynchronizationService")
}
val c: ComponentName? = startService(i)
在 AndroidManifest.xml 中:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.intentcaller">
<application>
...
</application>
<queries>
<package android:name="com.myapp" />
</queries>
</manifest>
但是当我尝试调用它时,我在日志中收到此错误:
Unable to start service Intent { cmp=com.myapp/.SynchronizationService } U=0: not found
谢谢
【问题讨论】:
-
您正在检查哪个 android 版本?你也有
QUERY_ALL_PACKAGES清单中提到的here的权限吗? -
我没有添加
QUERY_ALL_PACKAGES,因为据我了解,我已经添加了标签,它似乎是其中之一。我试试看 -
我试过了,结果还是一样的错误“无法启动服务意图”。另外,我正在检查 Android 6 设备,但使用 SDK 30 构建
-
使用
adb列出您设备上的所有意图,并检查是否可以找到您的:adb shell dumpsys activity broadcasts |grep -iE ".+\.[0-9A-Z_\-]+:$" |sort -
谢谢!我刚刚尝试了命令行,但没有看到我的列表。可能是因为我没有正确注册它。但我不知道为什么...:/
标签: android android-intent service