2013-10-15 50 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