Android广播接收器不工作?
我试图使用广播接收器来捕获网络变化,但它似乎根本不起作用 我的广播接收器:Android广播接收器不工作?,android,broadcastreceiver,Android,Broadcastreceiver,我试图使用广播接收器来捕获网络变化,但它似乎根本不起作用 我的广播接收器: public class btReceiver extends BroadcastReceiver { public btReceiver() { } @Override public void onReceive(Context context, Intent intent) { Log.d("BB","Received!"); Toast.makeText(context, "Action: " +
public class btReceiver extends BroadcastReceiver {
public btReceiver() {
}
@Override
public void onReceive(Context context, Intent intent)
{
Log.d("BB","Received!");
Toast.makeText(context, "Action: " + intent.getAction(), Toast.LENGTH_LONG);
}
}
我这样称呼它:
IntentFilter filter = new IntentFilter();
filter.addAction(getPackageName() + "android.net.conn.CONNECTIVITY_CHANGE");
btReceiver myReceiver = new btReceiver();
registerReceiver(myReceiver, filter);
但当我尝试切换wifi时,什么也没发生。我还试着在清单中声明如下:
<receiver android:name=".btReceiver" android:enabled="true" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
但这也不起作用
我已在清单中声明了足够的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
我的测试设备运行的是Android 7.1.1,有人知道它为什么不启动吗?您的程序包名称不应该是
意图的一部分。因此,请尝试:
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
更好的是,有一个常数:
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
针对安卓N(牛轧糖)
的应用程序不会收到CONNECTIVITY\u ACTION
广播,即使它们有清单条目请求通知这些事件。正在运行的应用程序如果请求使用BroadcastReceiver
通知,仍可以在其主线程上侦听CONNECTIVITY\u CHANGE
您应该以编程方式注册它,或者使用JobScheduler
,GcmNetworkManager
或library这是正确的,尽管他是以编程方式注册BroadcastReceiver
,这是合法的。他可能在清单中添加了接收者以使其工作,这是毫无意义的,因为它试图拦截错误的意图
操作