我想不断检查手机是否连接到特定的无线网络。我当然想到了一个服务和网络的SSID,但是如何?不断检查无线网络变化
回答
你会想
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>
在您的接收器标签。
或者,如果你想对更多的控制权,之前注册广播接收器设置这些:
final IntentFilter filters = new IntentFilter();
filters.addAction("android.net.wifi.WIFI_STATE_CHANGED");
filters.addAction("android.net.wifi.STATE_CHANGE");
super.registerReceiver(yourReceiver, filters);
WIFI_STATE_CHANGED
广播意图的行动表明的Wi-Fi已启用,禁用,启用,禁用或未知。一个额外的提供了这个状态作为一个int。如果可用,另一个额外提供以前的状态。
STATE_CHANGE
广播意图的行动表明Wi-Fi连接的状态已经改变。一个额外的提供了一个NetworkInfo对象形式的新状态。如果新状态为“连接”,则额外的额外资源可以提供接入点的BSSID和WifiInfo。作为一个字符串
此外,您还需要指定正确的权限:
<user-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<user-permission android:name="android.permission.ACCESS_WIFI_STATE" />
全部代码:Download
AndroidManifest.xml中
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.temp.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.example.temp.MyWiFiStateListener">
<intent-filter >
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>
</receiver>
</application>
MainActivity.java
package com.example.temp;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
广播接收器:
package com.example.temp;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.util.Log;
public class MyWiFiStateListener extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
Log.d("TEMP", action);
if(action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if(info.getType() == ConnectivityManager.TYPE_WIFI){
WifiManager myWifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = myWifiManager.getConnectionInfo();
Log.d("TEMP","BSSID :: " + wifiInfo.getBSSID() + "SSID :: " + wifiInfo.getSSID());
}
}
}
}
听起来很不错。我现在检查一下。谢谢 – incredikid 2013-02-12 18:56:14
让我知道,如果你需要整个解决方案。 – VendettaDroid 2013-02-12 18:57:07
好的我有点困惑。因此,如果我创建一个BroadcastReceiver并添加intent-filters,我将如何检查BSSID? – incredikid 2013-02-12 19:27:50
- 1. 如何检测网络中的变化?
- 2. 在iPad上检测wifi网络变化
- 3. iOS API检测无线网络
- 4. iphone - 我如何检查我是否连接到无线网络
- 5. Android - 连接到指定的无线网络和检查SSID
- 6. 检查我是否在范围内我的无线网络
- 7. 如何判断手机是否连接到无线网络或手机网络?
- 8. Mod_Rewrite不断变化的网址
- 9. ios检测到无线变化
- 10. 模拟无线网络OMNet ++
- 11. windows移动无线网络
- 12. ubuntu:操纵无线网络
- 13. 无线网络c程序
- 14. 连接到无线网络
- 15. 针对不断变化的数据模型检查报告
- 16. 如何检测网络断开连接?
- 17. Android网络检查不可靠
- 18. 在无线网络断开之前做些事情
- 19. 使用python从无线网络断开连接(Windows)中
- 20. 是不断变化
- 21. 不断变化页
- 22. 目标C不断检查变量值
- 23. 在Android中检查网络
- 24. Python - 检查网络图
- 25. 检查网络连接
- 26. 检查网络连接iPhone
- 27. 检查网络可在android
- 28. 如何检查从网络
- 29. 强制Android使用无线网络,无网络
- 30. 网络共享文件的快捷方式名称不断变化
“不断检查”?你知道会杀死多少电池吗? [只需检查一次](http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html)然后[注册一个接收器来检查连接性的变化](http:// stackoverflow。 COM /问题/ 3307237 /何灿的i-监视器的网络连接状态 - 在 - 机器人)。 – Eric 2013-02-12 18:48:35
有WiFi_STATE_CHANGED广播。您可以使用该广播来检测WiFi网络中的更改。 – VendettaDroid 2013-02-12 18:49:52
@尼克好吧你是对的我的意思是实际上每5分钟。 – incredikid 2013-02-12 18:51:02