我想设置监听器来监听无线状态,谁能帮我写代码
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
...
TelephonyManager wTelephonyManager;
...
wTelephonyManager=(TelephonyManager)getSystemService(Context.WIFI_SERVICE);
wTelephonyManager.listen(new PhoneL(),PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
//这里是我想监听wifi变化的事件,上面的代码都在onCreate{}
class PhoneL extends PhoneStateListener
{
public void onWifiStateChanged(int state, String nesto)
{
mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
//mWifi.isConnectedOrConnecting()
if(mWifi.isConnectedOrConnecting())
{
Toast.makeText(WifiActivity.this,"Ima WIFI",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(WifiActivity.this,"! NEMA WIFI",Toast.LENGTH_LONG).show();
}
}
}
//任何人都可以帮我创建一个监听器来监听 wifi 状态并检查 wifi 是否已连接或是否已连接我想通过 3g/4g 启用数据包流量
最佳答案
我也遇到了这个问题,下面是我是如何解决的。
在我的 onCreate(..) Activity 中我做了
this.registerReceiver(mWifiStateChangedReceiver,new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));
此外,我以这种方式创建了成员“mWifiStateChangedReceiver”
private BroadcastReceiver mWifiStateChangedReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub
int extraWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
switch (extraWifiState)
{
case WifiManager.WIFI_STATE_DISABLED:
case WifiManager.WIFI_STATE_DISABLING:
enableUI(false);
break;
case WifiManager.WIFI_STATE_ENABLED:
ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
while(conMan.getActiveNetworkInfo() == null || conMan.getActiveNetworkInfo().getState() != NetworkInfo.State.CONNECTED)
{
try
{
Thread.sleep(500);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
update();
enableUI(true);
break;
case WifiManager.WIFI_STATE_ENABLING:
break;
case WifiManager.WIFI_STATE_UNKNOWN:
break;
}
}
};
如您所见,当我得到 WifiManager.WIFI_STATE_ENABLED
时,我还会测试网络是否真的已连接,因为启用的 WiFi 并不意味着它已连接。至少这是我的猜测,这就是我等待网络真正连接的原因。
关于android - 监听WIFI状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9434235/