【问题标题】:Notification every time wifi is disconnected [duplicate]每次wifi断开时通知[重复]
【发布时间】:2013-10-16 11:46:54
【问题描述】:

我需要我的应用程序在 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();}

 }
 };

【问题讨论】:

    标签: java android eclipse


    【解决方案1】:

    onReceive()BroadCastReceiver 中使用此行

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

    isNetworkConnectionAvailable() 的代码是

        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;
    }
    

    评论我的结果

    【讨论】:

    • ctx 变量有错误?我是一个完整的初学者。
    • 使用您的代码和@NARESH REDDY 的答案,将 ctx 替换为 context
    • 它对你我的英雄有用。
    【解决方案2】:

    使用它来检查连接InetAddress.isReachable,如果有连接则该方法返回true,否则返回false

    【讨论】:

      猜你喜欢
      • 2023-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多