Ссылка на приложение для Android - открыть ссылку из приложения в браузере, не вызывая ссылку - PullRequest
2 голосов
/ 11 ноября 2019

Я включил привязку приложения в моем приложении. Работает нормально. Но в моем приложении есть несколько сценариев, где я не могу обработать входящий URL. В этих случаях я хочу перенаправить этот URL-адрес в браузер по умолчанию на устройстве.

В настоящее время я пытался использовать намерения, чтобы открыть браузер с URL-адресом, но он снова перенаправляет себя в мое приложение. Ссылка на приложение имеет формат ->

https://<domain>/<prefix>/<params>

, поэтому в зависимости от параметров я бы хотел обработать ссылку на приложение в самом приложении или перенаправить ее в браузер по умолчанию. Ниже приведен код, который я пытался открыть в браузере с указанным выше URL

val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(appLinkModel.url))
browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER)
browserIntent.resolveActivity(packageManager)?.let {
    startActivity(browserIntent)
}

. Я пытался исключить строку addCategory (), но результаты остались прежними. Либо приложение аварийно завершает работу (следовательно, resolActivity ()), либо приложение само открывается в цикле.

ЧТО Я ХОЧУ ДЕЛАТЬ

Итак, я хочу перенаправить URL-адрес в браузер по умолчанию (или показать выбор БЕЗ myприложение в нем), не вызывая ссылку на приложение снова и снова. Так возможно ли это?

Ответы [ 3 ]

2 голосов
/ 11 ноября 2019
String data = "example.com/your_url?param=some_param"
Intent defaultBrowser = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_BROWSER);
defaultBrowser.setData(data);
startActivity(defaultBrowser);

этот метод (с использованием makeMainSelectorActivity) заставит ссылку открыться в браузере устройства по умолчанию

Примечание - makeMainSelectorActivity работает только для API уровня 15 и выше.

Если вам нужно поддерживать уровни API ниже 15, вы можете попробовать this hack

0 голосов
/ 11 ноября 2019

К сожалению, мы не можем исключить какой-либо определенный URL, поскольку Android не предоставляет эту опцию.

Но вы можете справиться с использованием префикса пути.

// To handle:
http://myhost.com/v/page1?id=123
// To exclude:
http://myhost.com/v/page2?id=123

тогда в манифесте

<data android:scheme="http"
      android:host="myhost.com"
      android:pathPrefix="/v/page1" />
0 голосов
/ 11 ноября 2019
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("/13269043/ssylka-na-prilozhenie-dlya-android-otkryt-ssylku-iz-prilozheniya-v-brauzere-ne-vyzyvaya-ssylku"));
        Intent chooseIntent = Intent.createChooser(intent, "Choose from below");
        startActivity(chooseIntent);

Это откроет все установленные веб-браузеры, из которых пользователь может выбрать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...