【问题标题】:Checking internet conection on Android Nougat without deprecated methods在不推荐使用方法的情况下检查 Android Nougat 上的互联网连接
【发布时间】:2017-07-03 20:45:50
【问题描述】:

根据文档,我无法使用 ConnectionChangeReceiver 制作自己的

<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

因为android.net.conn.CONNECTIVITY_CHANGE 已被弃用。

而且使用JobExecutor 是个坏主意,因为它每 15 分钟检查一次互联网连接不少于一次……没用的工具。

那么,在所有版本的 Android 操作系统上,如何在没有弃用方法的情况下检查后台(服务或某些接收器)的互联网连接?

【问题讨论】:

  • 使用 JobService 检查网络连接

标签: android internet-connection


【解决方案1】:

如果您明确使用 BroadcastReceiver 并请求通知,您的应用仍然可以在 Nougat 上接收连接更改通知。

引用文档:

面向 Android 7.0(API 级别 24)及更高版本的应用如果在清单中声明其广播接收器,则不会接收 CONNECTIVITY_ACTION 广播。如果应用向 Context.registerReceiver() 注册 BroadcastReceiver 并且该上下文仍然有效,则应用仍将收到 CONNECTIVITY_ACTION 广播。

要使其在不同的 android 版本上工作,您可以像我们通常做的那样在清单中声明权限,此外,在您的活动中使用以下代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    registerReceiver(mNetworkReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}

【讨论】:

    猜你喜欢
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    相关资源
    最近更新 更多