android - 有什么方法可以检测用户关闭 WIFI 或数据的确切时间?
问题描述
我搜索了一下,结果发现
Broadcast Receiver
不推荐用于 N 以上的目标。我发现了
GCMNetworkManager
。而且还会贬值。- 我也查了
JobScheduler
。但是,它的行为不是我想要实现的。
我可以在这三种方法中实现的唯一方法是定期检查互联网状态。
然而,我不想要它。我想要的是在用户关闭或打开它们时检测事件。然后,我想显示一个对话框以确保用户再次打开它。
我制作 iOS 的大学说,他使用Observer
他的 iOS 应用程序。并说也许Android是一样的。
有没有办法让它成为可能?
解决方案
你可以考虑 Manifest 中的那些。
<receiver android:name="receiver.NetworkChangeReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
但是,这些已被弃用。
相反,您可以以编程方式声明它。
- 创建一个接收器类。
class NetworkChangeReceiver : BroadcastReceiver() {
var dialog: Dialog? = null
override fun onReceive(context: Context, intent: Intent) {
val isConnected = NetworkUtil.getConnectivityStatusString(context)
Toast.makeText(context, "Intere State Changed: $isConnected", Toast.LENGTH_SHORT).show()
}
}
- 在你的
Activity
.
// Internet Check Receiver
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
this.registerReceiver(NetworkChangeReceiver(), intentFilter)
推荐阅读
- ruby-on-rails - AJAX 在我的代码中无法在 rails 6 中工作,我的 create.js.erb 代码无法正常工作,我每次都必须重新加载才能在索引视图中显示我的消息
- laravel - 我们如何使用 laravel 中的关系从两个表中获取记录?
- python - apscheduler 作业按顺序等待结束作业,然后开始下一个
- c# - MVC - 为 DropDownList 添加 ViewBag 一个选择列表
- aws-device-farm - AWS Device Farm:如何在自定义测试环境中使用传递给“计划运行”的参数
- visual-studio-code - 如何在 vscode 中禁用 jupyter 编辑器
- kotlin - 如何在 kotlin 中使用委托对象作为成员参数
- r - 如何从 rmarkdown 中的向量创建子标题
- javascript - 如何使用 JavaScript 将具有层次关系的 csv 文件转换为对象?
- reactjs - 有没有办法缓存 Material-ui 样式?