У меня есть приложение для Android, которое люди используют в качестве замены для веб-сайта. Следовательно, когда пользователи сталкиваются с URL-адресом на веб-сайте, я хочу дать им возможность "открыть URL-адрес" в моем приложении, а не в браузере. Другими словами, я хочу, чтобы появилось всплывающее окно, которое позволяет им выбирать между моим приложением и браузером (и, возможно, другими приложениями).
Я понимаю из разных источников, что мне нужно добавить фильтр намерения к активности в моем приложении с фильтром "данных", который фильтрует URL-адреса правильной формы.
Этот веб-сайт http://members.iracing.com, поэтому я добавил следующий фильтр намерений:
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:host="members.iracing.com" />
</intent-filter>
</activity>
Я пробовал различные формы этих фильтров данных, например, используя один "data" node с обоими атрибутами:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" android:host="members.iracing.com"/>
</intent-filter>
Это просто не работает. Я не знаю, что еще тебе сказать. Я размещал простую HTML-страницу на своем веб-сайте с двумя ссылками на разные страницы этого веб-сайта (все начиная с "http://members.iracing.com/..." ), и когда я нажимаю на любую из них, они просто открывают в браузере, даже не спрашивая, какое приложение я хочу использовать. Я попробовал это как на эмуляторе, так и после установки приложения на моем физическом устройстве, ничего не работает. Я попробовал это в совершенно BLANK, новом Android-проекте, чтобы убедиться, что это сработает, ничего.
Затем я понял, что для веб-сайта требуется аутентификация, и если вы не вошли в систему, он перенаправляется на страницу входа в https://members.iracing.com/membersite/login.jsp, поэтому я попытался заменить схему по "https". Я даже попытался изменить хост на "www.members.iracing.com", и в конце концов я даже попробовал комбинацию из всех этих вещей (не уверен, что это сработает, но эй, я в отчаянии на этом этапе....)
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="members.iracing.com" />
<data android:host="www.members.iracing.com" />
</intent-filter>
По-прежнему нет. Я не уверен, что перенаправление имеет отношение, хотя браузер явно сначала переходит на сайт без перенаправления, а затем перенаправляется на страницу входа в систему, но ни в коем случае я не могу выбрать его, чтобы открыть его в своем приложении. Кроме того, если я сначала зарегистрирую браузер в браузере, перенаправления не будет, и он все равно не работает.
Я пропустил что-то очевидное здесь? Я вытаскиваю свои волосы, почему это не работает, и я не могу отлаживать его, не пытаясь использовать все возможные комбинации, о которых я мог думать (я сделал...). Спасибо за любую помощь!