根据文档,我无法使用
创建ConnectionChangeReceiver
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
因为android.net.conn.CONNECTIVITY_CHANGE
已被弃用。
使用JobExecutor
是一个坏主意,因为它每15分钟检查一次互联网连接不少于一次......没用的工具。
那么,如何在所有版本的Android Android上不使用弃用的方法检查后台(服务或某些接收器)中的互联网连接?
答案 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));
}