【问题标题】:Android JobIntentService ADB Error: Requires permission android.permission.BIND_JOB_SERVICEAndroid JobIntentService ADB 错误:需要权限 android.permission.BIND_JOB_SERVICE
【发布时间】:2018-05-12 20:13:33
【问题描述】:

我正在尝试设置 JobIntentService 并使用 adb 对其进行测试。

当我使用这个命令时:

adb shell am startservice -a "com.example.package.action.DO_THING"

它会产生错误:

Error: Requires permission android.permission.BIND_JOB_SERVICE

我的 AndroidManifest.xml 有以下条目:

<service
    android:name=".services.intents.IntentHandlerService"
    android:permission="android.permission.BIND_JOB_SERVICE"
    android:exported="true">
    <intent-filter>
         <action android:name="com.example.package.action.DO_THING"/>
    </intent-filter>
</service>

【问题讨论】:

  • 我的猜测是adb shell am 缺少该权限。
  • JobServices 似乎需要此权限。 JobIntentServices 是否不打算处理外部广播意图?
  • “JobIntentServices 不打算处理外部广播意图吗?” - 正确的。它们纯粹供应用程序内部使用。如果您需要从外部触发作业,则需要使用其他东西(例如,将 Intent 显式广播到清单注册的接收器)。
  • 如果您回复上述内容作为答案,我会将其标记为这样,以便您获得信用。

标签: android adb jobintentservice


【解决方案1】:

JobIntentServiceJobService 一样,只能在应用程序中使用。您不能让其他应用程序与这些服务通信,也没有任何直接的PendingIntent 选项。

(理论上,您可能可以与 Android 4.4 及更早版本上的其他应用程序中的 JobIntentService 交谈,因为我不确定在未定义该权限时将如何处理 android:permission="android.permission.BIND_JOB_SERVICE",但我不会不要指望它)

对于 IPC,您将需要使用其他东西。因此,例如,如果您希望 JobIntentService 处理 PendingIntent,请创建一个广播 PendingIntent,并使用指向清单注册接收器的显式 Intent,并让它将作业发布到 @ 987654330@.

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 2023-03-22
    • 2022-12-04
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多