Android url override не работает при перенаправлении
у меня есть url, который я переопределяю в своем приложении для Android. При нажатии на ссылку из электронной почты на эту ссылку появляется Intent Chooser
dialog ("завершить это с помощью"). Однако, нажав на ту же ссылку (в <a>
тег) из Chrome (на Android 4) перенаправляет меня на этот url-адрес и не предлагает Intent Chooser
.
если я заменю ссылку в <a>
тег со ссылкой на Google Play Store (https://play.google.com
) затем при нажатии на ссылку всплывает Intent Chooser
еще раз.
Is там что-то особенное с Google Play Store и Chrome, или я сделал что-то неправильно, настроив свой url? Есть ли что-то, что я могу сделать в html, чтобы сделать эту работу?
здесь <intent-filter>
<activity
android:label="@string/app_name"
android:name="..."
>
<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"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="https"
android:host="www.example.com"
/>
<data android:scheme="http"
android:host="www.example.com"
/>
</intent-filter>
</activity>
(перенаправление на url-адрес также не всплывает Intent Chooser
диалог, но я понял, что моя ситуация выше более четко выражает мою проблему.)
кроме того, я уверен, что все это работало, пока мой домен не работал. Как только мои владения вышел в интернет, это перестало работать. Это может быть плодом моего воображения, поскольку в то время я не был на 100% сосредоточен на этой проблеме.
возможно ли, что Chrome обрабатывает специальные URL-адреса Google Play Store, иначе он ждет ответа не 200 от url-адреса перед открытием Intent Chooser
?
3 ответов
вполне может быть реальной / известной ошибкой.
тот, который я предложил (но который теперь закрыт, поэтому, похоже, будет исправлен для версии, с которой вы пытаетесь): https://code.google.com/p/chromium/issues/detail?id=113140
найдено / открыто @xbakesk: https://code.google.com/p/chromium/issues/detail?id=170925 https://code.google.com/p/chromium/issues/detail?id=230104
Если какие-либо другие ошибки, просто дайте мне знать в комментариях я добавлю или отредактирую свой ответ напрямую. Если ошибки будут закрыты, я также попытаюсь обновить ответ.
Я немного повозился с этим, и может быть проще просто показать вам метод, который работает. Это работает на устройстве с 2.3.4 и устройстве с 4.2.2, поэтому я думаю, что он будет работать на большинстве устройств.
вот мой фильтр намерений из файла манифеста:
<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="http" android:host="realsimpleapps.com" android:pathPrefix="/acv/" />
</intent-filter>
вот мой html-файл:
<a href="http://realsimpleapps.com/acv/aThing">Click Me!</a>
и в моей основной деятельности я использую это, чтобы захватить все, что у меня есть" все " (выше), установленное на:
Uri data = getIntent().getData();
if (data != null) {
List<String> params = data.getPathSegments();
if (params != null) {
Log.d(tag, "Param 0: " + params.get(0));
}
}
получите эту работу, затем добавьте второй элемент данных в фильтр намерений. Если он все еще работает после этого, вы должны быть установлены.
дайте нам знать, как она идет.
db
Я не уверен, если вы можете добавить более одного элемента данных к фильтру намерений. Я бы использовал два разных фильтра намерений для разных схем.
Если у вас есть контроль над url-адресом, который находится на веб-странице, вы можете изменить http на свой собственный протокол, чтобы ваше приложение открылось вместо запроса в веб-браузере.