Crosswalk: как получить URL-адрес не-веб-ресурса, открытого в новой вкладке/окне

Допустим, в моем представлении Crosswalk в моей активности Android отображается такая страница:

<html>
<body>
<a target="_blank" href='http://some-website.com/document.pdf'>Download a PDF</a>
</body>
</html>

Как я могу перехватить URL-адрес этой ссылки?

Обратите внимание, что поскольку ссылка открывается в новом «окне», обратные вызовы, такие как XWalkResourceClient.shouldOverrideUrlLoading или shouldInterceptLoadRequest, не вызываются, вероятно, потому, что Crosswalk загружает совершенно новый документ.

Существует обратный вызов для создания окна, XWalkUIClient.onCreateWindowRequested, но он не содержит параметров, содержащих URL-адрес, загружаемый в новом окне.

Я также знаю, что при создании нового окна пользовательский код может создать экземпляр нового XWalkView, который будет использоваться для загрузки целевого документа, и я должен установить клиент пользовательского ресурса и клиент пользовательского интерфейса.

Что я пробовал до сих пор:

  • Все методы в XWalkResourceClient и XWalkUIClient с параметром URL как в исходном, так и в целевом представлениях. Либо они не вызываются, либо параметр нулевой или пустой;
  • В XWalkUIClient.onCreateWindowRequested верните подкласс XWalkView, который переопределяет load(), чтобы он мог перехватывать URL-адрес. Этот метод не вызывается.

Любое предложение приветствуется. Спасибо!


person ris8_allo_zen0    schedule 11.04.2016    source источник


Ответы (1)


Я уверен, что override shouldOverrideUrlLoading перехватит URL-адрес в вашем html. Я ничего особенного не сделал и добавил код, как показано ниже:

  mXWalkView.setResourceClient(new XWalkResourceClient(mXWalkView) {
        @Override
        public boolean shouldOverrideUrlLoading(XWalkView view, String url) {
            Log.i(LOGTAG, "shouldOverrideUrlLoading  ");
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        }
  });

Затем загрузите предоставленный вами html:

mXWalkView.load("file:///android_asset/download.html", null);

Когда я щелкаю ссылку в XWalkView, будет вызываться shouldOverrideUrlLoading и пользовательский интерфейс, как показано ниже,

введите здесь описание изображения

person Hill    schedule 18.05.2016
comment
Можно ли активировать это при нажатии ссылки href в веб-просмотре пешеходного перехода? Если да, то как? - person AlexioVay; 18.06.2016
comment
Мой образец выше — это Crosswalk WebView. - person Hill; 20.06.2016