Как открыть пользовательский обработчик протокола на Android с веб-страницы JavaScript? - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть ссылка, которая перенаправляет на пользовательский протокол, такой как custom://open/..., используя GET-запрос, и он отлично работает, и приложение открывается.Я хочу загрузить промежуточную страницу и выполнить обработку, а затем перенаправить на пользовательский протокол.Я пробовал

$.post("/f", {f: m, name: "name"}, function() {
     window.location.href = "${redirect}";

Но в консоли Chrome с помощью удаленной отладки я получаю следующее.(В эмуляции Android Chrome для настольных ПК только «навигация отменена» - ожидается.)

Навигация заблокирована: custom: //ProductDetail/com.test.autofl3? Id = autofl3 & channel = & env = development & package = com.test.autofl3

Я попытался

$.post("/f", {f: m, name: "${name}", redirect: "${redirect}"});

И выдал перенаправление 302 от контроллера на стороне сервера, но он выполняет запрос GET, за которым следует запрос POST (совершенно неверно)и дает мне

Доступ к XMLHttpRequest в 'custom: //ProductDetail/com.cnn? id = cnn & channel = & env = development & package = com.cnn' (перенаправлено с 'http://127.0.0.1:8080/f')from origin 'http://127.0.0.1:8080' заблокирован политикой CORS: запросы на разные источники поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, https.

Я пытался(верните POST, чтобы вернуть OK) и используйте это, я нашел: https://gist.github.com/davidwkeith/2662899

$.post("/f", {f: m, name: "${name}", redirect: "${redirect}"}, function() {
      $('#loader').src = "${redirect}";

Но ничего не вышло. Никаких ошибок.

Я использую Spring Boot нана стороне сервера, не то чтобы это имело значение.

Я уже видел


Я пытался создать кнопку и выдать искусственный щелчок мыши с событиями, как описано здесь, но это не сработало.Навигация по-прежнему «отменена».

https://stackoverflow.com/a/13236463/148844

  <script>
  $(function() {
    console.log("${redirect}");
    var linkToFakeClick = document.createElement("a");
    linkToFakeClick.href = "${redirect}";
    var fakeMouseClickEvent = document.createEvent("MouseEvents");
    fakeMouseClickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    linkToFakeClick.dispatchEvent(fakeMouseClickEvent);
    console.log("fake clicked");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...