Как заставить глубокие ссылки Android работать из браузера Chrome OS?

На веб-странице у меня есть URL-адрес, который является прямой ссылкой на мое приложение для Android. Он имеет форму myapp://myrequest?url=someurl

Это фиксируется с помощью фильтра намерений в манифесте приложения. Я использую getIntent().getData.getQueryParameter("url") в onCreate() своей активности, чтобы получить часть someurl, которая мне нужна для дальнейшей обработки. Фильтр намерений имеет вид:

<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="myapp"
        android:host="myrequest" />
</intent-filter>

Он отлично работает на устройствах Android и в браузерах Android, установленных через APK и/или магазин Play на устройствах ChromeOS. Но из родного браузера ChromeOS не работает. При нажатии на ссылку открывается диалоговое окно с сообщением:

Google Chrome OS не может открыть эту страницу

Как заставить это работать? Должен ли я форматировать URL-адрес по-другому? Нужно ли добавлять и/или изменять фильтр намерений? Или есть какой-то совершенно другой метод, который я должен использовать для ChromeOS?


person Jaidev Ramakrishna    schedule 16.04.2020    source источник


Ответы (1)


Путем проб и ошибок я заметил, что родной браузер ChromeOS не любит использовать пользовательские схемы для открытия приложений Android. Если вместо этого вы используете http или https, браузер должен спросить вас, хотите ли вы открыть URL-адрес с помощью своего приложения.

Пример:

<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="https"
        android:host="my.app.com" />
</intent-filter>

Чтобы протестировать запуск вашего приложения, используйте window.open("https://my.app.com"); в консоли браузера.

person Filip Wennerdahl    schedule 12.03.2021