Android - 结合 JobScheduler 检测可用的 WIFI

Android - Detect WIFI available combined with 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,而仅在较低版本的清单中保留静态广播接收器。

小 API-开关,

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

,要不就看这里Writing backwards compatible Android code.

您可以通过以下方式禁用静态广播接收器:

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
}