Динамическая ссылка в приложении Meet для Андройд

Вопрос в общем такой: создал приложение для Андройда "Видеоконференция - бесплатная видеосвязь" Между собой всё работает отлично, обмениваемся ссылкой и попадаем в нужную нам комнату, обмен производится динамической ссылкой.

 private fun handleDynamicLink() {
    Firebase.dynamicLinks
            .getDynamicLink(intent)
            .addOnSuccessListener { pendingDynamicLinkData ->
                // Получить ссылку с результатом (может иметь значение NULL, если не найдено никакой связи)
                val deepLink: Uri?
                if (pendingDynamicLinkData != null) {
                    deepLink = pendingDynamicLinkData.link
                    deepLink?.getQueryParameter("meetingCode")?.let { joinMeeting(it) }

                }
            }
            .addOnFailureListener { _ ->
                toast(getString(R.string.main_error_fetch_dynamic_link))
            }
}

Как видно, за попадание в комнату отвечает ключ "meetingCode" и код который каждый раз генерируется новый. Всё работает супер. Но решил расширить возможности и создал сайт Видеоконференция в котором динамическая ссылка открывается с этим ключом и не попадает в нужную комнату https://videotranslation.ru/?rCounter=erersthh

Помогите убрать ?rCounter= из сылки, что бы работало коректно должно выглядеть так https://videotranslation.ru/erersthh

Если из строкового ресурса

https://videotranslation.ru/?meetingCode=%1$s

Убрать ?meetingCode= , то работает обмен ссылкой с телефона на комп. А вот обмен ссылкой телефон-телефон теряется.


Ответы (1 шт):

Автор решения: Andrew

Если я правильно понял то вам нужно из этого:

https://videotranslation.ru/?rCounter=erersthh

сделать это:

https://videotranslation.ru/erersthh

Есть два варианта: слепить свой урл или вырезать из строки ненужные буквы. Для вырезки букв можно воспользоваться описанном в документации методе :

fun CharSequence.removeRange(
startIndex: Int,
endIndex: Int
 ): CharSequence

где в качестве стартового индекса вы подаете такой:

url.indexOf("?")

а в качестве конечного индекса:

url.indexOf("=")

и на выходе получаете то что вам нужно. Второй вариант - построить свой урл немного сложнее и замороченнее, так как вам нужно будет вытащить erersthh из стартового урла предварительно. Для вытаскивания можем воспользоваться методом из документации:

fun String.substring(startIndex: Int, endIndex: Int): String

где в качестве стартового и конечного индекса используйте упомянутые выше индексы. Дальше строим урл вручную (пример ):

https://www.myawesomesite.com/turtles/types?type=1&sort=relevance#section-name

и строим:

Uri.Builder builder = new Uri.Builder();
builder.scheme("https")
    .authority("www.myawesomesite.com")
    .appendPath("turtles")
    .appendPath("types")
    .appendQueryParameter("type", "1")
    .appendQueryParameter("sort", "relevance")
    .fragment("section-name");
String myUrl = builder.build().toString();

какой вариант вам будет удобнее решать вам :)

→ Ссылка