【问题标题】:Unable to start service Intent from another app无法从另一个应用程序启动服务 Intent
【发布时间】: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


【解决方案1】:

您可以在应用中通过服务声明权限,并在启动意图时在应用中使用此权限

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多