gpt4 book ai didi

Android JobScheduler - 无法创建持久作业

转载 作者:IT老高 更新时间:2023-10-28 23:18:38 29 4
gpt4 key购买 nike

我正在试用 Android Lollipop 附带的新 JoScheduler API。到目前为止,我已经成功地创建并运行了一个延迟为 6000 毫秒的作业,没有任何网络要求。

但是,我刚刚尝试通过使用 setPersisted(true) 函数来保持相同的工作。一旦调用了作业 build() 函数,它现在就会失败,说我需要 Manifest 文件中的 RECEIVED_BOOT_COMPLETED 权限。

但是我已经添加了权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.android" >

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

我什至在添加作业之前添加了以下代码,以查看该应用是否注册了权限:

PackageManager pm = context.getPackageManager();
int hasPerm = pm.checkPermission(Permission.RECEIVE_BOOT_COMPLETED,
context.getPackageName());
if (hasPerm == PackageManager.PERMISSION_GRANTED)
{
// Goes into here every time
}

但是,在构建作业时,我收到以下错误:

java.lang.IllegalArgumentException: Error: requested job be persisted without holding RECEIVE_BOOT_COMPLETED permission.

我创建作业并将其添加到 JobSchedular 的代码:

ComponentName serviceComponent = new ComponentName(getApplicationContext(), MyJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(1, serviceComponent)
.setMinimumLatency(6000)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setPersisted(true);
JobScheduler jobScheduler = (JobScheduler) getApplicationContext().getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());

我的 JobService list 声明:

<service
android:name=".service.MyJobService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true" >
</service>

所以我想知道我是否在做其他任何人都可以发现的错误。我要注意的唯一一点是,代码是在 IntentService 中运行的,所以我想知道这是否可能是 JobScheduler 找不到权限的原因。

最佳答案

我遇到了同样的问题,但后来意识到我在添加启动权限后没有重新安装我的应用程序。因此,该应用在安装时从未有机会请求所需的权限。

一旦我卸载并重新安装该应用程序,它就可以工作了。

注意:我的理解是应用程序需要在安装时获得他们的许可。但是,我必须在这里得到纠正。

关于Android JobScheduler - 无法创建持久作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29653885/

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