diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 4ff3476d1..87b61812e 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -842,12 +842,22 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C @WorkerThread fun computeUserAgent() { - if (corePreferences.deviceName.isEmpty()) { + val savedDeviceName = corePreferences.deviceName + val deviceName = if (savedDeviceName.isEmpty()) { Log.i("$TAG Device name not fetched yet, doing it now") - corePreferences.deviceName = AppUtils.getDeviceName(context) - Log.i("$TAG Fetched device name is [${corePreferences.deviceName}]") + AppUtils.getDeviceName(context) + } else if (savedDeviceName.contains("'")) { + // Some VoIP providers such as voip.ms seem to not like apostrophe in user-agent + // https://github.com/BelledonneCommunications/linphone-android/issues/2287 + Log.i("$TAG Found an apostrophe in device name, removing it") + savedDeviceName.replace("'", "") + } else { + savedDeviceName } - val deviceName = corePreferences.deviceName + if (savedDeviceName != deviceName) { + corePreferences.deviceName = deviceName + } + Log.i("$TAG Device name for user-agent is [$deviceName]") val appName = context.getString(org.linphone.R.string.app_name) val androidVersion = BuildConfig.VERSION_NAME diff --git a/app/src/main/java/org/linphone/utils/AndroidUtils.kt b/app/src/main/java/org/linphone/utils/AndroidUtils.kt index c6d0ebaf7..25b133921 100644 --- a/app/src/main/java/org/linphone/utils/AndroidUtils.kt +++ b/app/src/main/java/org/linphone/utils/AndroidUtils.kt @@ -161,14 +161,19 @@ class AppUtils { Settings.Global.DEVICE_NAME ) if (name == null) { + Log.w("$TAG Failed to obtain device name, trying to get bluetooth name") name = Settings.Secure.getString( context.contentResolver, "bluetooth_name" ) } if (name == null) { - name = Build.MANUFACTURER + " " + Build.MODEL + Log.w("$TAG Failed to obtain bluetooth name, using device's manufacturer & model") + name = "${Build.MANUFACTURER} ${Build.MODEL}" } + + // Some VoIP providers such as voip.ms seem to not like apostrophe in user-agent + name = name.replace("'", "") return name } diff --git a/app/src/main/res/layout/settings_advanced_fragment.xml b/app/src/main/res/layout/settings_advanced_fragment.xml index ea6229d69..aa8971099 100644 --- a/app/src/main/res/layout/settings_advanced_fragment.xml +++ b/app/src/main/res/layout/settings_advanced_fragment.xml @@ -215,7 +215,7 @@ android:maxLines="1" android:background="@drawable/edit_text_background" android:inputType="text|textUri" - android:hint="@string/settings_advanced_device_id" + android:hint="@string/settings_advanced_device_id_hint" app:layout_constraintHorizontal_bias="0" app:layout_constraintWidth_max="@dimen/text_input_max_width" app:layout_constraintTop_toBottomOf="@id/device_id_label" diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 11403c8da..9f264d80d 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -255,6 +255,7 @@ Paramètres avancés Garder l\'app en vie via un Service Nom du périphérique + Caractères alpha-numériques uniquement Chiffrement du média Rendre le chiffrement du média obligatoire URL de configuration distante diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7d95be00f..5edd069c2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -292,6 +292,7 @@ Advanced settings Keep app alive using Service Device ID + Alpha-numerical characters only Media encryption Media encryption mandatory Remote provisioning URL