Я хотел бы постоянно проверять, подключен ли телефон к определенной беспроводной сети. Конечно, я думал о службе и SSID сети, но как?Постоянная проверка на изменение беспроводной сети
ответ
Вы хотите
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>
В ресивере теге.
Или, если вы хотите получить больше контроля над ним, перед регистрацией BroadcastReceiver настроить их:
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
Broadcast намерения действия о том, что Wi-Fi был включен, отключен , включение, отключение или неизвестность. Один дополнительный параметр обеспечивает это состояние как int. Другая дополнительная опция обеспечивает предыдущее состояние, если оно доступно.
STATE_CHANGE
Broadcast цель действия, указывающее, что состояние подключения 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;
}
}
Broadcast Receiver:
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
Дайте мне знать, если вам нужно все решение. – VendettaDroid
ok Я немного смутился. Поэтому, если я создаю BroadcastReceiver и добавлю фильтры намерений, как я могу проверить BSSID? – incredikid
- 1. Настройки беспроводной сети
- 2. ios обнаруживает изменение в беспроводной сети
- 3. Arduino и LoRa sx1272 беспроводной беспроводной сети
- 4. Беспроводной маршрутизатор и координатор беспроводной сети
- 5. Подключиться к беспроводной сети
- 6. мониторинг использования беспроводной сети
- 7. Автоматизация клиентского добавления беспроводной сети
- 8. Pinging все подсети беспроводной сети
- 9. Настройка AsteriskNow в беспроводной сети
- 10. Драйвер устройства беспроводной сети Linux
- 11. Легитимность Пользователь в беспроводной сети
- 12. изменение ключа безопасности беспроводной сети CMD или VBScript
- 13. Постоянная проверка фокуса окна
- 14. Как беспроводной принтер идентифицирует себя в сети?
- 15. Разработка приложений Apple по беспроводной сети/Wifi
- 16. Android: Подключите два телефона по беспроводной сети?
- 17. Развернуть приложения для Android по беспроводной сети
- 18. iOS установить домашнее приложение по беспроводной сети
- 19. Извлечение IP-адресов, выделенных по беспроводной сети
- 20. создавать и удалять профили беспроводной сети
- 21. Swift - получите тип беспроводной сети Wi-Fi
- 22. Разверните приложение для iPhone по беспроводной сети?
- 23. Получить информацию о зарядке беспроводной сети
- 24. Sniff trafic с wirehark в беспроводной сети
- 25. Сохранение учетных данных профиля беспроводной сети Windows
- 26. Функция R для подключения к беспроводной сети
- 27. Результат доступа к беспроводной сети в jQuery
- 28. Настройка LXC для использования беспроводной размещенной сети
- 29. Анимация беспроводной сети Adhoc в NAM
- 30. Улавливание пакетов в беспроводной сети (libpcap)
"Постоянно проверять"? Вы понимаете, сколько батарея убьет? [Просто проверьте его один раз] (http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html), затем [зарегистрируйте приемник, чтобы проверить изменения в подключении] (http: // stackoverflow. ком/вопросы/3307237/как-кан-я-монитор--сети связи, статус-в-андроида). – Eric
Существует широковещательная передача WiFi_STATE_CHANGED. Вы можете использовать эту трансляцию для обнаружения изменений в сети Wi-Fi. – VendettaDroid
@ Ник, ты прав, я имел в виду каждые 5 минут. – incredikid