Cześć ! Mam pewien problem z wykrywaniem połączenia.
Mój kod wygląda tak:
class NetworkStateChangeReceiver: BroadcastReceiver()
{
private val TAG = "NSCR"
override fun onReceive(context: Context?, intent: Intent?)
{
Log.v(TAG, "onReceive(): init")
var counter = 0
val serviceManager = ServiceManager(context)
var isConnected = serviceManager.checkInternetState()
while(isConnected == 0)
{
isConnected = serviceManager.checkInternetState()
counter++
if(counter > 20)
{
break
}
Thread.sleep(1000)
}
if(isConnected == 1)
{
Toast.makeText(context, "Połączono z internetem !!!", Toast.LENGTH_LONG).show()
}
else if (isConnected == 2)
{
Toast.makeText(context, "Połączono z internetem !!!", Toast.LENGTH_LONG).show()
}
else
{
Log.e(TAG, "Brak połączenia")
}
}
}
Receiver ( AndroidManifest ):
<receiver
android:name=".NetworkStateChangeReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
</intent-filter>
</receiver>
Gdy aplikacja jest wyłączona i włączę WIFI, aplikacja robi to co powinna ( pokazuje Toast-a ), natomiast kiedy aplikacja jest wyłączona i włącze dane komórkowe nic się nie pokazuje ( funkcja onReceive() nie jest wywoływana ).
Co muszę zrobić aby aplikacja wykrywała włączenie danych komórkowych ?
Potrzebuje to zrobić, żeby aplikacja od razu po połączeniu z internetem połączyła się z serwerem.
**EDIT: **
Kiedy aplikacja jest wyłączona i kiedy WIFI i dane komórkowe są włączone, to urządzenie korzysta z WIFI.
Kiedy to WIFI wyłącze, telefon automatycznie przerzuca się na **dane komórkowe **. Kiedy tak zrobię, aplkacja wykrywa zmianę.