Не удается зарегистрировать sipcall на Android 7.0 с динамическим номером порта sip

Я реализовал простой SIP-вызов с помощью Android Api SipManager. Когда я использую SIP-порт по умолчанию 5060 (поскольку мне не нужно упоминать об этом в коде подробности), он хорошо работает как на Android 4.4, так и на Android 7. Но когда я использую другой SIP-порт, такой как (5090), у меня есть Explicity упомянул их в коде. В этом случае я могу создать sip call только для Android 4.4 (API 19), но отказался зарегистрироваться для sip call на Android 7 с (API 24). Любая помощь будет высоко ценится.

/ *: makeSipProfile * Описание: создает экземпляр пользовательского SipProfile и позволяет приложению * принимать вызовы. */

private void makeSipProfile() {
    if (manager != null) {
        // Creates a SipProfile for the User
        try {
            SipProfile.Builder builder = new SipProfile.Builder(USERNAME, DOMAIN);
            builder.setPassword(PASSWORD);
            builder.setProtocol("UDP");    //explicitily mentioning sip port
            builder.setPort(5090);         // port 5090
            profile = builder.build();
            Log.e("$$", "SipProfile was built.");

            // Creates an intent to receive calls
            Intent intent = new Intent();
            intent.setAction("android.VOIPDEMO.INCOMING_CALL");
            PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, Intent.FILL_IN_DATA);
            manager.open(profile, pendingIntent, null);


            // Determines if the SipProfile successfully registered
            manager.setRegistrationListener(profile.getUriString(),
                new SipRegistrationListener() {

                    /**
                     * Name: onRegistering
                     * Description: Logs a status message indicating the
                     *              SipProfile is registering.
                     */
                    public void onRegistering(String localProfileUri) {
                        Log.e("$$", "Sip Profile <" + localProfileUri + " is registering");
                    }

                    /**
                     * Name: onRegistrationDone
                     * Description: Logs a status message indicating the
                     *              SipProfile successfully registered.
                     */
                    public void onRegistrationDone(String localProfileUri, long expiryTime) {
                        Log.e("$$", "Sip Profile <" + localProfileUri + "> successfully registered");
                        VoipActivity.setText(localProfileUri + " login successful");
                    }

                    /**
                     * Name: onRegistrationFailed
                     * Description: Logs a status message indicating the
                     *              SipProfile failed to register.
                     */
                    public void onRegistrationFailed(String localProfileUri, int errorCode, String errorMessage) {
                        Log.e("$$", "Sip Profile failed to register <" + localProfileUri + "> " +
                                " Error message: " + errorMessage);
                        VoipActivity.setText(localProfileUri + " login unsuccessful. Error message:" + errorMessage);
                    }
                });
        } catch (ParseException e) {
            Log.e("$$", "SipProfile was not built.");
            e.printStackTrace();
        } catch (SipException e) {
            e.printStackTrace();
        }
    }
}

0 ответов

Другие вопросы по тегам