在不使用弃用方法的情况下检查Android Nougat上的互联网连接

时间:2017-07-03 12:19:29

标签: android internet-connection

根据文档,我无法使用

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

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

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

那么,如何在所有版本的Android Android上不使用弃用的方法检查后台(服务或某些接收器)中的互联网连接?

1 个答案:

答案 0 :(得分:2)

如果您明确使用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));
}