2012-07-08 30 views
0

我尝试实现网络接收器,这是我下面的代码:网络接收器不工作

package com.example.androidtablayout; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.util.Log; 

public class NetworkReceiver extends BroadcastReceiver { // <1> 
public static final String TAG = "NetworkReceiver"; 
boolean isConnected = true; 
Context c; 
@Override 
public void onReceive(Context context, Intent intent) { 


    boolean isNetworkDown = intent.getBooleanExtra(
    ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); // <2> 

    if (isNetworkDown) { 
    Log.d(TAG, "onReceive: NOT connected, stopping UpdaterService"); 
    // context.stopService(new Intent(context, UpdaterService.class)); // <3> 
    } else { 
     Log.d(TAG, "onReceive: connected, starting UpdaterService"); 
    // context.startService(new Intent(context, UpdaterService.class)); // <4> 
    } 
    } 

} 

在manifest.xml

 <application> 
     <receiver android:name=".NetworkReceiver"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
     </receiver> 
    </application> 

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

我的问题是,当我关掉无线网络,日志仍然显示“连接”,

我认为网络接收器没有正确接收intenet连接。任何帮助将不胜感激。

+0

当您关闭WiFi时,onReceive()会被触发吗? – Egor 2012-07-08 16:52:24

+0

是的,我可以看到 – smith 2012-07-08 17:14:35

+0

下的日志消息在onReceive()方法中设置一个断点,并查看您获得的Intent。要么是,要么添加一些打印出Intent及其EXTRAS内容的日志记录。我认为你没有得到你认为你应该得到的EXTRAS。 – 2012-07-08 19:58:40

回答

0

Here是一个示例类,向您展示如何执行此操作。我认为这正是你需要的,它可能有助于解决你的问题。在这个示例中,BroadcastReceiver是以编程方式注册而不是Manifest,但我认为它对您来说不会有问题。

让我知道如果作品。