【发布时间】:2016-12-27 14:39:04
【问题描述】:
我有一个类可以在我的应用程序运行时检查 Internet 是否连接:
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if (isConnected){
Toast.makeText(context, "CONNECTED!", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(context, "NOT CONNECTED", Toast.LENGTH_LONG).show();
}
}}
我在清单文件中添加了这个接收器,在应用程序括号之间
<receiver
android:name=".DataHelpers.NetworkChangeReceiver"//DataHelpers is the package name
android:label="NetworkChangeReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
当我运行依赖于互联网的应用并关闭连接时,我不应该收到“已连接!”的Toast 消息吗?接收者不应该认识到没有连接并在我的NetworkChangerReceiver 类中触发onReceive() 方法吗?
【问题讨论】:
-
您是否在活动的 onResume 上注册了您的接收器?
-
不,我该怎么做?你能写一个答案吗?我认为注册只是意味着将其包含在清单文件中?
-
你请求权限吗?