2017-07-03 83 views
0

根据该文件,因为android.net.conn.CONNECTIVITY_CHANGE已过时,我不能检查网络连接如没有不赞成的方法

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

使自己ConnectionChangeReceiver

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

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

+0

使用JobService进行检查网络连接 –

回答

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)); 
}