Я нашел такое же поведение при работе в вопросах подключения. Я закончился регистрация в android.net.conn.CONNECTIVITY_CHANGE
для обнаружения при изменении статуса Интернета, а затем с помощью метода для обнаружения нового status.Bellow моей реализация для метода:
public enum InternetStatus { WIFI, MOBILE, ROAMING, NO_INTERNET, UNKNOWN };
/**
* Get the internet status of the phone. The possible values are :
* +Not connected
* +Connected through WiFi
* +Connected to Mobile Carrier
* +Connected on Roaming
* @param context Context under which the app is running
* @return Returns the internet status as an enum value
*/
public static InternetStatus getInternetStatus(Context context)
{
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null) { // connected to the internet
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
// connected to wifi
//Toast.makeText(context, activeNetwork.getTypeName(), Toast.LENGTH_SHORT).show();
return InternetStatus.WIFI;
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
// connected to the mobile provider's data plan
if(activeNetwork.isRoaming()) {
//Toast.makeText(context, activeNetwork.getTypeName() + " Roaming", Toast.LENGTH_SHORT).show(); // roaming
return InternetStatus.ROAMING;
}
else {
//Toast.makeText(context, activeNetwork.getTypeName() + " NOT Roaming", Toast.LENGTH_SHORT).show();
return InternetStatus.MOBILE;
}
}
} else {
// not connected to the internet
//Toast.makeText(context," NO Internet", Toast.LENGTH_SHORT).show();
return InternetStatus.NO_INTERNET;
}
return InternetStatus.UNKNOWN;
}
После того, как вы получите подключение к интернету, вы должны получить доступ к вы SIP класс Account и вызвать
sipAccount.setRegistration(true);
Это вызовет библиотеку для отправки сообщения о регистрации еще раз, и все должно работать правильно.
Надеюсь, это поможет.
Я сделал то же самое. Это работает, если вы не звоните. Если вы находитесь в вызове, это не работает, что означает, что вызов не будет повторно подключен. Любые предложения очень ценятся. – Vinay