当应用程序处于后台模式时,我们如何检测用户已断开Wi连接?
众所周知,在Android7.0之后,当发送BroadcastsReceveirs广播意图时,我们的CONNECTIVITY_ACTION就不再被触发。手动/以编程方式注册BroadcastReceiver不是一个选项,因为我的应用程序是在后台运行的。
我试着安排了一个JobService,当用户跳入中的WiFi网络(NETWORK_TYPE_UNMETERED需求)时,它工作得很好,但是当用户跳出WiFi直接进入一个没有互联网的状态时,它就不能工作了。就像如果用户有,没有SIM卡,。
JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(new JobInfo.Builder(JOB_ID,
new ComponentName(this, NoInternetJobService.class))
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_METERED)
.build());
在上面的例子中,如果用户跳出WiFi并连接到计量连接(带有数据的SIM卡),我的WiFi就会被触发。
有些人可以说,对网络需求使用JobInfo.NETWORK_TYPE_NONE,但这只是计划作业的默认值。我基本上是对jobScheduler说,不要查看网络参数来运行我的工作,因为我根本不需要互联网。因此,由于我没有任何其他需求,所以它将在我计划的时候执行。
有什么想法吗?我开始认为这不可能在努格特或更高的地方完成。
发布于 2018-02-21 18:18:27
解决方案-听android.net.wifi.STATE_CHANGE广播而不是android.net.conn.CONNECTIVITY_CHANGE意图。
https://stackoverflow.com/questions/46007204
复制相似问题