java - 广播接收器 Wifi 已禁用

标签 java android broadcastreceiver android-broadcast

我希望我的应用程序在 wifi“离线”时发出通知。

我弄清楚了通知部分。但我似乎无法弄清楚“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();
        }
    }
};

最佳答案

你可以尝试这样的事情

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

关于java - 广播接收器 Wifi 已禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19387443/

相关文章:

java - 在形状上画一条绳子

java - 为自定义对话框设置标题

android - 检测是否从 Google Play 与 Amazon 与其他下载了 Android 应用程序

android - 如何等待确认短信在 AsyncTask 中发送?

android - 广播接收器 onReceive() 被多次调用

java - DynamoDBMappingException : no RANGE key value present

java - 如何根据hashmap中的值获取key

java - 如何手动添加插件到现有的eclipse项目?

android - 创建适合所有屏幕的多设备应用程序

android - 将额外的 Intent 传递给 android 广播接收器