2013-10-16 238 views
-1

我需要我的應用程序在WiFi下線時發出通知。每次通知wifi已斷開連接

每當WiFi連接發生變化時,我都會通知您。但我需要它只在脫機時發出通知。

此外,它還提供了啓動(應用程序)的通知。

我的問題是,如何更改代碼以僅在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();} 

} 
}; 

謝謝!

回答

0

使用這一行onReceive()BroadCastReceiver

if(!isNetworkConnectionAvailable(ctx)){ 
     Toast.makeText(ctx, "Network Connection Available ", Toast.LENGTH_LONG).show(); 
    } 

爲isNetworkConnectionAvailable(代碼)方法返回true是

public static boolean isNetworkConnectionAvailable(Context context) 
{ 
    boolean isNetworkConnectionAvailable = false; 

    ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService("connectivity"); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 

    if(activeNetworkInfo != null) 
    { 
     isNetworkConnectionAvailable = activeNetworkInfo.getState() == NetworkInfo.State.CONNECTED; 
    } 
    return isNetworkConnectionAvailable; 
} 

對評論我有關結果

+0

ctx變量出現錯誤?我是一個完整的初學者。 – user2883477

+0

使用你的代碼和@NARESH REDDY的答案,用** context **替換** ctx **。 –

+0

它是你的我的英雄。 – user2883477