Added linphone-config scheme to (automatically or not) do a remote provisioning step using an URL
This commit is contained in:
parent
ea190fdfb7
commit
df4d136305
5 changed files with 58 additions and 1 deletions
|
@ -130,6 +130,13 @@
|
|||
<data android:scheme="sip-linphone" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="linphone-config" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<action android:name="android.intent.action.SENDTO" />
|
||||
|
|
|
@ -53,6 +53,7 @@ import org.linphone.R
|
|||
import org.linphone.activities.*
|
||||
import org.linphone.activities.assistant.AssistantActivity
|
||||
import org.linphone.activities.main.viewmodels.CallOverlayViewModel
|
||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
import org.linphone.activities.navigateToDialer
|
||||
import org.linphone.compatibility.Compatibility
|
||||
|
@ -290,7 +291,19 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
|||
navigateToContact(contactId)
|
||||
}
|
||||
} else {
|
||||
handleTelOrSipUri(uri)
|
||||
val stringUri = uri.toString()
|
||||
if (stringUri.startsWith("linphone-config:")) {
|
||||
val remoteConfigUri = stringUri.substring("linphone-config:".length)
|
||||
if (corePreferences.autoRemoteProvisioningOnConfigUriHandler) {
|
||||
Log.w("[Main Activity] Remote provisioning URL set to [$remoteConfigUri], restarting Core now")
|
||||
applyRemoteProvisioning(remoteConfigUri)
|
||||
} else {
|
||||
Log.i("[Main Activity] Remote provisioning URL found [$remoteConfigUri], asking for user validation")
|
||||
showAcceptRemoteConfigurationDialog(remoteConfigUri)
|
||||
}
|
||||
} else {
|
||||
handleTelOrSipUri(uri)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -545,4 +558,34 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
|||
coreContext.onCallOverlayClick()
|
||||
}
|
||||
}
|
||||
|
||||
private fun applyRemoteProvisioning(remoteConfigUri: String) {
|
||||
coreContext.core.provisioningUri = remoteConfigUri
|
||||
coreContext.core.stop()
|
||||
coreContext.core.start()
|
||||
}
|
||||
|
||||
private fun showAcceptRemoteConfigurationDialog(remoteConfigUri: String) {
|
||||
val dialogViewModel = DialogViewModel(remoteConfigUri, getString(R.string.dialog_apply_remote_provisioning_title))
|
||||
val dialog = DialogUtils.getDialog(this, dialogViewModel)
|
||||
|
||||
dialogViewModel.showCancelButton {
|
||||
Log.i("[Main Activity] User cancelled remote provisioning config")
|
||||
dialog.dismiss()
|
||||
}
|
||||
|
||||
val okLabel = getString(
|
||||
R.string.dialog_apply_remote_provisioning_button
|
||||
)
|
||||
dialogViewModel.showOkButton(
|
||||
{
|
||||
Log.w("[Main Activity] Remote provisioning URL set to [$remoteConfigUri], restarting Core now")
|
||||
applyRemoteProvisioning(remoteConfigUri)
|
||||
dialog.dismiss()
|
||||
},
|
||||
okLabel
|
||||
)
|
||||
|
||||
dialog.show()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -510,6 +510,9 @@ class CorePreferences constructor(private val context: Context) {
|
|||
val showContactInviteBySms: Boolean
|
||||
get() = config.getBool("app", "show_invite_contact_by_sms", true)
|
||||
|
||||
val autoRemoteProvisioningOnConfigUriHandler: Boolean
|
||||
get() = config.getBool("app", "auto_apply_provisioning_config_uri_scheme", false)
|
||||
|
||||
/* Default values related */
|
||||
|
||||
val echoCancellerCalibration: Int
|
||||
|
|
|
@ -772,4 +772,6 @@
|
|||
<string name="account_setting_delete_sip_linphone_org_confirmation_dialog">Votre compte sera supprimé localement.\nPour le supprimer de manière définitive, rendez-vous sur notre plateforme de gestion des comptes :</string>
|
||||
<string name="call_action_attended_transfer_call">Transfert supervisé</string>
|
||||
<string name="chat_room_last_message_sender_format">%s :</string>
|
||||
<string name="dialog_apply_remote_provisioning_title">Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</string>
|
||||
<string name="dialog_apply_remote_provisioning_button">Appliquer</string>
|
||||
</resources>
|
|
@ -761,6 +761,8 @@
|
|||
<string name="dialog_update_available">An update is available</string>
|
||||
<string name="dialog_try_open_file_as_text_title">No app found for this kind of file</string>
|
||||
<string name="dialog_try_open_file_as_text_body">Would you like to try opening it as a plain text file?</string>
|
||||
<string name="dialog_apply_remote_provisioning_title">Do you want to download and apply configuration from this URL?</string>
|
||||
<string name="dialog_apply_remote_provisioning_button">Apply</string>
|
||||
|
||||
<!-- Content description -->
|
||||
<string name="content_description_add_sip_address_field">Add a SIP address field</string>
|
||||
|
|
Loading…
Reference in a new issue