¿Cómo obtener una notificación cuando un dispositivo se conecta a su android wifi tethering AP?

Permito wi-fi tethering a través de mi aplicación en mi dispositivo Android. ¿Cómo puedo obtener una notificación en mi aplicación cuando alguien se conecta a la red Wi-Fi atada por mi aplicación? ¿Necesito registrarme para algunos receptores de difusión específicos?

He pegado debajo del código fuente de la aplicación

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((ToggleButton) findViewById(R.id.toggle_tethering)).setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(CompoundButton button, boolean isChecked) { WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); Boolean result = false; WifiConfiguration config = new WifiConfiguration(); config.SSID = "Tab3OpenWifi"; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); String setWifiApConfigurationMethodName = "setWifiApConfiguration"; Method setWifiApConfigurationMethod = wifiManager.getClass().getMethod(setWifiApConfigurationMethodName, WifiConfiguration.class); result = (Boolean) setWifiApConfigurationMethod.invoke(wifiManager, config); if (result) { String setWifiApEnableMethodName = "setWifiApEnabled"; Method setWifiApEnableMethod = wifiManager.getClass().getMethod(setWifiApEnableMethodName, WifiConfiguration.class, boolean.class); String message; if (isChecked) { result = (Boolean) setWifiApEnableMethod.invoke(wifiManager, null, true); if (result) { message = "Enabling tethering successfully"; } else { message = "Enabling tethering failed"; } } else { result = (Boolean) setWifiApEnableMethod.invoke(wifiManager, null, false); if (result) { message = "Disabling tethering successfully"; } else { message = "Disabling tethering failed"; } } Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Failed to update Wifi Tethering config.", Toast.LENGTH_SHORT).show(); } } 

Utilicé por debajo del receptor de difusión para obtener el estado de AP.

 private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.d(TAG,"mReceiver.onReceive>>"); String action = intent.getAction(); if (WIFI_AP_STATE_CHANGED_ACTION.equals(action)) { Log.d(TAG,"WIFI_AP_STATE_CHANGED_ACTION"); } else if (ACTION_TETHER_STATE_CHANGED.equals(action)) { ArrayList<String> available = intent.getStringArrayListExtra( EXTRA_AVAILABLE_TETHER); ArrayList<String> active = intent.getStringArrayListExtra( EXTRA_ACTIVE_TETHER); ArrayList<String> errored = intent.getStringArrayListExtra( EXTRA_ERRORED_TETHER); Log.d(TAG,"==Available=="); for(String str : available) Log.d(TAG, ""+str); Log.d(TAG,"==Active=="); for(String str : active) Log.d(TAG, ""+active); Log.d(TAG,"==Error=="); for(String str : errored) Log.d(TAG, ""+str); } else if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(action)) { } Log.d(TAG,"mReceiver.onReceive<<"); } }; 

No creo que haya una API para eso, ni ningún evento de difusión que puedas escuchar.

La única opción que puedo pensar es operando a un nivel inferior, es decir, el nivel del núcleo. No soy un experto, pero he usado para monitorear el archivo / proc / net / tcp para buscar conexiones abiertas. Ese puede ser un punto de partida para usted.

También escribí una biblioteca simple, si usted quiere conseguir una ojeada de cómo lo hice. Puede encontrarlo aquí: https://github.com/dextorer/AndroidTCPSourceApp

  • Conectarse a la red wifi en android, devolver si la contraseña es incorrecta
  • ¿Cómo me conecto a una red Wi-Fi específica en Android mediante programación?
  • ¿Cómo puedo imprimir a través de una impresora WiFi en Android mediante una conexión Wi-Fi Direct?
  • ¿Puedo cambiar el propietario del grupo en un grupo persistente en Wi-Fi Direct?
  • Aplicaciones de Android, comunicación con un dispositivo conectado al puerto USB
  • Cree un punto de acceso con el Nexus 7
  • ¿Cómo averiguar otro usuario conectado a la misma red WIFI con la que está en android?
  • Cómo deshabilitar el asistente de red cautiva en el dispositivo Android?
  • Acceso a la red cuando el teléfono Android está dormido
  • Android Wi-Fi Direct leer la intensidad de la señal rssi
  • Android: Fuerza los datos que se envían a través de radio vs WiFi
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.