1

我愿意检测设备何时在 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 中,仅用于较低版本。

4

2 回答 2

0

小型 API 开关,

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

,否则看看这里写向后兼容的Android代码

于 2016-03-08T01:12:54.603 回答
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
}
于 2016-03-08T22:26:22.983 回答