1

在我们的应用程序中,我们希望将 Wifi 和蜂窝相关的呼叫分流。我们将目标设定为 28。

代码如下所示,用于基于蜂窝调度。但是,我们无法设置NETWORK_TYPE_CELLULAR.

    ComponentName componentName = new ComponentName(this, CellularJobServiceTest.class);

    JobInfo jobInfo = new JobInfo.Builder(125,componentName)
            .setRequiredNetworkType(JobInfo.NETWORK_TYPE_CELLULAR)
            .setPeriodic(10000).build();

    JobScheduler jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
    int resultCode = jobScheduler.schedule(jobInfo);

    if(resultCode==JobScheduler.RESULT_SUCCESS){
        Log.e(TAG,"Cellular : Job scheduled successfully");
    }else{
        Log.e(TAG,"Cellular : Job schedule failed.");
    }

Android文档说NETWORK_TYPE_METERED已弃用并改为使用NETWORK_TYPE_CELLULAR

来自Android文档的参考:

此常量在 API 级别 28 中已弃用。蜂窝网络可能未计量,或者 Wi-Fi 网络可能计量,因此这不是选择特定传输的好方法。相反,NETWORK_TYPE_CELLULAR 如果您的工作需要特定的网络传输,请使用或 NetworkRequest.Builder.addTransportType(int)。

但 Android Studio 抛出Wrong constant错误。

如果我知道为什么我无法设置它,那将是非常棒的。提前致谢。

4

0 回答 0