Java 连接事件接收器不';行不通
我想收听连接更改,并按如下方式进行了尝试: 显示Java 连接事件接收器不';行不通,java,android,Java,Android,我想收听连接更改,并按如下方式进行了尝试: 显示 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- ....... --> <receiver android:name="<packagename>.ConnectionReceiver"> <intent-filter>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- ....... -->
<receiver
android:name="<packagename>.ConnectionReceiver">
<intent-filter>
<action android:name="ConnectivityManager.CONNECTIVITY_ACTION" />
</intent-filter>
</receiver>
不幸的是,当我打开和关闭WiFi连接时,它似乎没有被呼叫
这里有什么问题,我错过了什么吗?你可以试试这样的东西: 在“manifest”下的AndroidManifest.xml中
那是什么动作?尝试使用android.net.conn.CONNECTIVITY\u更改操作谢谢,你说得对。但不幸的是,上面的接收器只被呼叫了一次,虽然我打开和关闭了大约15次WiFi。谢谢,但很抱歉,我看不出这里有什么不同。这和我做的不一样吗?我的问题是onReceive方法只被调用一次,我认为您的Receiver类(它肯定比我的;)无法解决这个问题。这个问题发生在Hi ceran之前,当互联网连接中断或状态改变时,android会抛出广播。你只需要收听广播,所以你不必每次都去查看。嗨,拉尔斯,谢谢。这正是我想要做的,我认为我的方法应该做到这一点,但当我打开和关闭几次Wi-Fi连接时,它只接收一次广播。Hi-ceran,仔细看看这个页面:特别是在应用程序中注册广播接收器。我已经知道这个页面,但是作者在活动中注册了接收器,但我不需要任何gui组件。
public class ConnectionReceiver extends BroadcastReceiver {
private static final String TAG = "ConnectionReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Connection changed");
}
}
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<receiver android:name="com.blackboard.androidtest.receiver.ConnectionChangeReceiver" android:label="NetworkConnection">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
public class ConnectionChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (activeNetInfo != null) {
Toast.makeText(context, "Active Network Type : " + activeNetInfo.getTypeName(), Toast.LENGTH_SHORT).show();
}
if (mobNetInfo != null) {
Toast.makeText(context, "Mobile Network Type : " + mobNetInfo.getTypeName(), Toast.LENGTH_SHORT).show();
}
}
}