Błąd Sip podczas rejestracji

Używam rodzimych metod wywoływania sip i działa dobrze, ale jakiś czas podaje błąd rejestracji IN_PROGRESS (kod błędu -9). Mam wyszukiwanie w kodach błędów Sip, ale nie znajduję żadnego kodu błędu tego rodzaju. Oto mój kod do rejestracji sip .PLease powiedz mi, czy ktoś ma pomysł na ten błąd, powiedz mi.

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.*;
import android.net.sip.*;
import java.text.ParseException;
/**
 * Handles all calling, receiving calls, and UI interaction in the WalkieTalkie app.
 */
public class WalkieTalkieActivity extends Activity implements View.OnTouchListener {

    public String sipAddress = null;
    public static SipManager manager = null;
    public static SipProfile me = null;
    public SipAudioCall call = null;
    public SipErrorCode sipcode;
    public SipException sipexeception;
    public static WalkieTalkieActivity walkiy;

    public static WalkieTalkieActivity getInstance() {
        if (walkiy == null) {
            walkiy = new WalkieTalkieActivity();
        }
        return walkiy;
    }

    @
    Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        Log.e("onCreate", "onCreate");
        initializeManager(this);
    }

    @
    Override
    public void onStart() {
        super.onStart();
        // When we get back from the preference setting Activity, assume
        // settings have changed, and re-login with new auth info.
    }

    @
    Override
    public void onDestroy() {

        super.onDestroy();
        if (call != null) {
            call.close();
        }
        closeLocalProfile();
    }

    @
    Override
    protected void onResume() {
        initializeManager(this);
        super.onResume();
    }

    public void initializeManager(Context ctx) {

        Log.e("inilitize", "initialize manager");

        if (manager == null) {
            manager = SipManager.newInstance(ctx);

        }
        initializeLocalProfile(ctx);
    }

    /**
     * Logs you into your SIP provider, registering this device as the location to
     * send SIP calls to for your SIP address.
     */
    public void initializeLocalProfile(final Context ctx) {
        Log.e("inilitize", "initialize profile");
        if (manager == null) {

            Log.e("inilitize", "return in profile");
            updateStatus("we are unable to establish this feature on your device ", ctx);
            Log.e("Wifi state", "" + SipManager.isSipWifiOnly(ctx));
            return;
        }
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
        String username = prefs.getString("namePref", "XYZ");
        String domain = prefs.getString("domainPref", "236.343.230.2");
        String password = prefs.getString("passPref", "XYZ");

        try {
            Log.e("inilitize", "building profile ");
            SipProfile.Builder builder = new SipProfile.Builder(username, domain);
            builder.setPassword(password);
            me = builder.build();
            manager.open(me);

            Log.e("alredy registered1", "" + manager.isRegistered(me.getUriString()));
            try {
                if (manager.isRegistered(me.getUriString())) {

                    Log.e("alredy registered2", "" + manager.isRegistered(me.getUriString()));
                    updateStatus("Ready", ctx);
                    return;
                }

            } catch (SipException e) {
                // TODO Auto-generated catch block
                closeLocalProfile();
                e.printStackTrace();
            }

            manager.setRegistrationListener(me.getUriString(), new SipRegistrationListener() {
                public void onRegistering(String localProfileUri) {

                    Log.e("Sip restration", "Registering with SIP Server..." + me.getUriString());
                    updateStatus("Registering with SIP Server...", ctx);
                }

                public void onRegistrationDone(String localProfileUri, long expiryTime) {
                    Log.e("Sip restration", "Ready");
                    updateStatus("Ready", ctx);

                }

                public void onRegistrationFailed(String localProfileUri, int errorCode,
                    String errorMessage) {
                    Log.e("Error Code Registration ", SipErrorCode.toString(errorCode) + " " + errorCode);
                    updateStatus(SipErrorCode.toString(errorCode), ctx);
                }
            });
        } catch (ParseException pe) {
            updateStatus("Connection Error.", ctx);
        } catch (SipException se) {
            updateStatus("Connection error.", ctx);
        }
    }

    /**
     * Closes out your local profile, freeing associated objects into memory
     * and unregistering your device from the server.
     */
    public void closeLocalProfile() {
        if (manager == null) {
            return;
        }
        try {
            if (me != null) {
                manager.unregister(me, new SipRegistrationListener() {

                    @
                    Override
                    public void onRegistrationFailed(String localProfileUri, int errorCode,
                        String errorMessage) {
                        // TODO Auto-generated method stub
                        Log.e("unregister failed", "unregister failed");

                    }

                    @
                    Override
                    public void onRegistrationDone(String localProfileUri, long expiryTime) {
                        // TODO Auto-generated method stub
                        Log.e("unregister done", "unregister done");
                    }

                    @
                    Override
                    public void onRegistering(String localProfileUri) {
                        // TODO Auto-generated method stub
                        Log.e("unregistering", "unregistering");
                    }
                });
                manager.close(me.getUriString());
            }
        } catch (Exception ee) {
            Log.d("WalkieTalkieActivity/onDestroy", "Failed to close local profile.", ee);
        }
    }

    /**
     * Make an outgoing call.
     */
    public void initiateCall(String number, final Context ctx, final View v) {


        Log.d("Number", "" + number);
        sipAddress = number;

        Log.e("initiating call", "initiating call");
        try {



            SipAudioCall.Listener listener = new SipAudioCall.Listener() {@
                Override
                public void onCallBusy(SipAudioCall call) {
                    // TODO Auto-generated method stub
                    Log.e("buzy", "buzy");
                    super.onCallBusy(call);
                }

                @
                Override
                public void onCallHeld(SipAudioCall call) {
                    // TODO Auto-generated method stub
                    Log.e("held", "held");
                    super.onCallHeld(call);
                }

                @
                Override
                public void onCalling(SipAudioCall call) {
                    // TODO Auto-generated method stub
                    Log.e("calling", "calling");
                    super.onCalling(call);
                }

                @
                Override
                public void onChanged(SipAudioCall call) {
                    // TODO Auto-generated method stub
                    Log.e("changed", "changed");
                    super.onChanged(call);
                }

                @
                Override
                public void onError(SipAudioCall call, int errorCode,
                    String errorMessage) {
                    // TODO Auto-generated method stub

                    Log.e("call error", "error" + SipErrorCode.toString(errorCode) + " " + errorCode);
                    CallingScreen.fa.finish();
                    super.onError(call, errorCode, errorMessage);
                }

                @
                Override
                public void onReadyToCall(SipAudioCall call) {
                    // TODO Auto-generated method stub
                    Log.e("ready to call", "ready to call ");
                    super.onReadyToCall(call);
                }

                @
                Override
                public void onRinging(SipAudioCall call, SipProfile caller) {
                    // TODO Auto-generated method stub
                    Log.e("ringing", "ringing");

                    super.onRinging(call, caller);
                }

                @
                Override
                public void onRingingBack(SipAudioCall call) {
                    // TODO Auto-generated method stub
                    Log.e("ringing back", "ringing back");

                    super.onRingingBack(call);
                }

                // Much of the client's interaction with the SIP Stack will
                // happen via listeners.  Even making an outgoing call, don't
                // forget to set up a listener to set things up once the call is established.
                @
                Override
                public void onCallEstablished(SipAudioCall call) {

                    Log.e("call established", "call established");
                    call.startAudio();
                    updateTime(true, ctx);
                }

                @
                Override
                public void onCallEnded(SipAudioCall call) {
                    Log.e("call ended", "call ended");

                    updateTime(false, ctx);
                    CallingScreen.fa.finish();
                }
            };

            Log.e("param 1 ", "" + me.getUriString());
            call = manager.makeAudioCall(me.getUriString(), sipAddress + "@216.245.200.2:5060", listener, 30);
        } catch (Exception e) {
            e.printStackTrace();
            Log.i("WalkieTalkieActivity/InitiateCall", "Error when trying to close manager.", e);
            if (me != null) {
                try {
                    closeLocalProfile();
                } catch (Exception ee) {
                    ee.printStackTrace();
                    Log.i("WalkieTalkieActivity/InitiateCall",
                        "Error when trying to close manager.", ee);
                    ee.printStackTrace();
                }
            }
            if (call != null) {
                call.close();
            }
        }
    }


    public void updateStatus(final String status, final Context context) {
        // Be a good citizen.  Make sure UI changes fire on the UI thread.
        this.runOnUiThread(new Runnable() {
            public void run() {
                generateNotification(context, status);

            }
        });
    }

    public void updateTime(final Boolean status, final Context context) {
        // Be a good citizen.  Make sure UI changes fire on the UI thread.
        this.runOnUiThread(new Runnable() {
            public void run() {

                if (status) {
                    CallingScreen.fa.calling_screen_text.setVisibility(View.GONE);
                    CallingScreen.fa.ch.setVisibility(View.VISIBLE);
                    CallingScreen.fa.ch.start();
                } else {
                    CallingScreen.fa.ch.stop();
                }
            }
        });
    }


    public void updateStatus(SipAudioCall call) {
        String useName = call.getPeerProfile().getDisplayName();
        if (useName == null) {
            useName = call.getPeerProfile().getUserName();
        }
        //      updateStatus(useName + "@" + call.getPeerProfile().getSipDomain());
    }


    public boolean onTouch(View v, MotionEvent event) {
        if (call == null) {
            return false;
        } else if (event.getAction() == MotionEvent.ACTION_DOWN && call != null && call.isMuted()) {
            call.toggleMute();
        } else if (event.getAction() == MotionEvent.ACTION_UP && !call.isMuted()) {
            call.toggleMute();
        }
        return false;
    }
    public void speaker(Boolean state) {
        if (call != null)
            call.setSpeakerMode(state);
    }

    public void endcall() {
        if (call != null) {
            try {
                call.endCall();
            } catch (SipException se) {
                Log.d("WalkieTalkieActivity/onOptionsItemSelected",
                    "Error ending call.", se);
            }
            call.close();
        }
    }

    public static void generateNotification(Context context, String message) {
        Log.e("inilitize", "generate notification");
        int icon = R.drawable.ic_launcher;
        long when = System.currentTimeMillis();
        NotificationManager notificationManager = (NotificationManager)
        context.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = new Notification(icon, message, when);
        String title = context.getString(R.string.app_name);
        Intent notificationIntent = new Intent(context, Splash_screen.class);
        // set intent so it does not start a new activity
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
            Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent intent =
            PendingIntent.getActivity(context, 0, notificationIntent, 0);
        notification.setLatestEventInfo(context, title, message, intent);
        notificationManager.notify(0, notification);
    }
}

questionAnswers(1)

yourAnswerToTheQuestion