Android - 检测WIFI与JobScheduler

时间:2016-03-08 00:33:14

标签: android wifi android-5.0-lollipop android-wifi android-jobscheduler

我愿意检测设备何时在WIFI上触发本地通知。

大多数答案包括让BroadcastReceiver收听wifi.STATE_CHANGE。然而有人指出,因为Android 5.0 JobScheduler提供了一种更有效的方法:

JobInfo uploadTask = new JobInfo.Builder(mJobId,
                                         mServiceComponent /* JobService component */)
        .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

我的应用程序仍然支持4.1,所以我不确定是否有任何方法可以为5.0+版本添加JobScheduler,并将静态广播接收器保留在Manifest中仅适用于较低版本。

2 个答案:

答案 0 :(得分:0)

小型A​​PI开关,

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
   //broadcast receiver 
}else{
   //scheduler
}

,否则请查看Writing backwards compatible Android code

答案 1 :(得分:0)

您可以通过执行以下操作来禁用静态广播接收器:

ComponentName receiver = new ComponentName(context, myReceiver.class);
PackageManager pm = context.getPackageManager();

pm.setComponentEnabledSetting(receiver, 
  PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
  PackageManager.DONT_KILL_APP); 

那么您可以在需要时通过以下方式进行验证:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
   //broadcast receiver 
}else{
   //scheduler
}