【问题标题】:Not allowed to start service Intent without permission android.permission.BIND_JOB_SERVICE未经许可不允许启动服务Intent android.permission.BIND_JOB_SERVICE
【发布时间】:2021-12-13 01:54:51
【问题描述】:

我目前正在为 ATAK 开发一个插件,我需要在其中启动一些从我创建的其他模块导入的服务。但是,当我尝试启动服务时,我收到标题中所述的错误。我有点困惑,因为我创建的服务在模块本身和插件 AndroidManifests 中都包含 BIND_JOB_SERVICE 权限,如下所示

        <service
        android:name="mqtt.MqttBrokerService"
        android:exported="true"
        android:permission="android.permission.BIND_JOB_SERVICE">
        <intent-filter>
            <action android:name="mqtt.MqttBrokerService"></action>
        </intent-filter>
    </service>

这些代码块位于 AndroidManifest 的应用程序部分,所以这不是问题。我很傻眼,不知道为什么会发生这种情况,也不知道为什么它甚至需要这个许可,因为它不是工作服务。最重要的是我创建了一个示例应用程序,它与我的插件具有完全相同的清单,并且示例应用程序可以很好地启动服务。唯一的区别在于我的插件,我不会从主要活动中启动服务,如下所示

    Intent startMqtt = new Intent("mqtt.MqttBrokerService");
    startMqtt.setPackage("com.atakmap.android");
    getMapView().getContext().startForegroundService(startMqtt);

【问题讨论】:

    标签: java android android-intent android-intentservice


    【解决方案1】:

    当您在清单中声明具有权限的 Service 时,这会告诉 Android 任何想要使用您的 Service 的代码都必须拥有指定的权限。您收到的错误表明某些代码正在尝试使用Service,而该代码不拥有android.permission.BIND_JOB_SERVICE 的权限。

    android.permission.BIND_JOB_SERVICE 的权限被JobScheduler 使用,所以我认为您正在尝试直接使用此Service,而不是通过JobScheduler。

    【讨论】:

      猜你喜欢
      • 2012-05-06
      • 2018-12-23
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      相关资源
      最近更新 更多