【问题标题】:BroadcastReceiver Wifi disabled广播接收器 Wifi 已禁用
【发布时间】:2013-10-16 02:17:04
【问题描述】:

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

【问题讨论】:

标签: java android broadcastreceiver android-broadcast


【解决方案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();
        }
    }
};
}

【讨论】:

  • 谢谢!我只认为这是为网络连接指定的。我需要它只对 wifi 连接做出反应。有什么建议吗?
  • 当 wifi 连接建立时代码会通知。我认为这是您最初的问题
  • 它无法正常工作。它会在启动时发出通知,以及当 wifi 连接变为 ON 或 OFF 时。我将在 startpost 中添加我的代码。我只需要在 wifi 关闭时发出通知。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多