2013-10-15 36 views
-1

我希望我的应用程序在wifi进入“离线”状态时发出通知。BroadcastReceiver Wifi无效

我想出了通知部分。但我似乎无法弄清楚'无线检查'部分。 我读了一些关于BroadcastReceiver的内容,但我似乎无法得到它的工作。任何有用的链接?或示例代码?教程?

在此先感谢!

更新了代码。它的工作,但我需要它只给出一个通知时,WiFi下线。

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) {   

    super.onCreate(savedInstanceState); 
    this.registerReceiver(this.mConnReceiver, 
      new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
    setContentView(R.layout.activity_main); 
} 

private BroadcastReceiver mConnReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
     boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); 
     String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON); 
     boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false); 

     NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); 
     NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO); 

     if(currentNetworkInfo.isConnected()){ 

     }else{ 
      showNotification(); 
     } 
    } 
}; 
+1

这是[广播接收器,当-WiFi的或-3G网络状态改变的(http://stackoverflow.com/重复问题/ 10733121/broadcastreceiver-when-wifi-or-3g-network-state-changed) – Steve

+0

我没有看到这个问题。无论如何,我更新了我的问题,现在不同了,我想哈哈。 – user2883477

+0

然后你需要开始一个新的线程。 – Steve

回答

1

你可以尝试这样的事情

In Manifest.xml 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

In your application Code: 

public class BroadCastSampleActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.registerReceiver(this.mConnReceiver, 
      new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
} 

private BroadcastReceiver mConnReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
     boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); 
     String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON); 
     boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false); 

     NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); 
     NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO); 

     if(currentNetworkInfo.isConnected()){ 
      Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show(); 
     }else{ 
      Toast.makeText(getApplicationContext(), "Not Connected", Toast.LENGTH_LONG).show(); 
     } 
    } 
}; 
} 
+0

谢谢!我只认为这是为网络连接指定的。我需要它只对WiFi连接作出反应。有什么建议? – user2883477

+0

代码将在无线连接建立时通知。我认为那是你原来的问题 –

+0

它工作不正常。它会在启动时发出通知,并且当WiFi连接变为开启或关闭时。我将在startpost中添加我的代码。我只需要在wifi关闭时发出通知。 – user2883477