BroadcastReceiver没有给出任何结果

时间:2014-01-09 03:07:55

标签: android broadcastreceiver android-broadcast

我在android中有一个关于NetworkListener的问题。

我已经实现了一个新类,它可以监听是否存在互联网连接(包括数据和wifi)。

代码如下:

package com.gelliesmedia.thumbqoo.services;
public class NetworkStateReceiver extends BroadcastReceiver {
    @SuppressWarnings("deprecation")
    public void onReceive(Context context, Intent intent) {
        Log.d("THUMBQOO","Network connectivity change");

        if(intent.getExtras()!=null) {
            NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);

            if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {
                Log.i("THUMBQOO","Network "+ni.getTypeName()+" connected");
            }
        }
        if(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) {
            Log.d("THUMBQOO","There's no network connectivity");
        }
    }
}

这就是我如何在清单中注册它:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver android:name="com.gelliesmedia.thumbqoo.services.NetworkStateReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

当我使用模拟器(genymotion)对其进行测试时,即使我拔掉了我的PC LAN电缆,也没有给我任何回复信息。

我是否必须在我拥有的所有Activity类中使用NetworkStateReceiver类?

Public class MainActivity extends MainActivity{
   onCreate(...)
   NetworkStateReceiver x = new NetworkStateReceiver(); <--- like this?
}

我还需要在这做什么吗?有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

尝试这种方式:

public class NetworkReciver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent arg1) {
        // TODO Auto-generated method stub
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        boolean isConnected = activeNetInfo != null
                && activeNetInfo.isConnectedOrConnecting();

        GeneralClass.isHaveInternet = isConnected ? true : false;
        if (isConnected)

            Log.e("NET-------------->", "connecte" + isConnected);

        else
            Log.e("NET------------->", "not connecte" + isConnected);
    }
}

检查应用中的连接。

if (GeneralClass.isHaveInternet)

                Log.e("NET-------------->", "connecte" + isConnected);

            else
                Log.e("NET------------->", "not connecte" + isConnected);

其中GeneralClass.isHaveInternet为public static boolean isHaveInternet = true;

相关问题