我愿意检测设备何时在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中仅适用于较低版本。
答案 0 :(得分:0)
小型API开关,
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
//broadcast receiver
}else{
//scheduler
}
答案 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
}