Android N无法发送android.net.conn.CONNECTIVITY_CHANGE广播? [英] Android N not sending android.net.conn.CONNECTIVITY_CHANGE broadcast?
问题描述
我已经在沙箱Android N应用程序中定义了一个接收器:
I have defined a receiver in a sandbox Android N application:
<receiver
android:exported="true"
android:name="com.sandboxapplication.NetworkReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
这很简单:
public class NetworkReceiver extends BroadcastReceiver {
private static final String TAG = NetworkReceiver.class.getName();
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Received Network Change event.");
}
}
如果在我的build.gradle文件中我的targetSdkVersion为23,则此接收器工作正常.但是,如果将targetSdkVersion设置为24,则接收器将永不接收任何东西.实际上,如果我在接收器中放置调试断点,Android Studio会直观地表明该类甚至从未加载到内存中.
This receiver is working fine if in my build.gradle file my targetSdkVersion is 23. However, if I set my targetSdkVersion to 24, the receiver never receives anything. In fact if I place a debug break point in my receiver Android Studio gives me the visual indication that it looks like the class is never even loaded into memory.
我错过了Android N文档中非常基本的内容吗?是否有检测连接变化事件的新方法?
Did I miss something very basic in the Android N documentation? Is there a new way to detect connectivity change events?
推荐答案
定位到Android N (Nougat)
的应用程序不会收到CONNECTIVITY_ACTION
广播,即使它们具有清单项也可以请求这些事件的通知.如果正在运行的应用程序请求使用BroadcastReceiver
进行通知,则仍可以在其主线程上监听CONNECTIVITY_CHANGE
.
Apps targeting Android N (Nougat)
do not receive CONNECTIVITY_ACTION
broadcasts, even if they have manifest entries to request notification of these events. Apps that are running can still listen for CONNECTIVITY_CHANGE
on their main thread if they request notification with a BroadcastReceiver
.
查看Android N (Nougat)
中的更改.请参考以下链接.
Android N行为更改
To see what changed in Android N (Nougat)
. Please refer below link.
Android N Behaviour Changes
这篇关于Android N无法发送android.net.conn.CONNECTIVITY_CHANGE广播?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!