1

In our app, we want to bifurcate Wifi and Cellular related calls. We have set the target to 28.

The code looks like below for scheduling cellular based. But, we are unable to set 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.");
    }

The Android documentation says NETWORK_TYPE_METERED is deprecated and to make use of NETWORK_TYPE_CELLULAR instead.

Reference from Android documentation:

This constant was deprecated in API level 28. Cellular networks may be unmetered, or Wi-Fi networks may be metered, so this isn't a good way of selecting a specific transport. Instead, use NETWORK_TYPE_CELLULAR or NetworkRequest.Builder.addTransportType(int) if your job requires a specific network transport.

But Android studio throws Wrong constant error.

It would be really awesome if I get to know why I am unable to set it. Thanks in advance.

Khaled Lela
  • 7,831
  • 6
  • 45
  • 73
shakunthalaMK
  • 386
  • 1
  • 4
  • 20

0 Answers0