2016-04-11 9 views
0

Lassen sie in meiner Android-Aktivität meiner Crosswalk Ansicht sagt, zeigt eine Seite wie diese:Fußgängerübergang: wie URL der Nicht-Web-Ressource in einem neuen Tab/Fenstern geöffnet bekommen

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

Wie kann ich die URL abfangen von Dieser Link?

Beachten Sie, dass die Callbacks wie XWalkResourceClient.shouldOverrideUrlLoading oder shouldInterceptLoadRequest nicht aufgerufen werden, da Crosswalk ein vollständig neues Dokument lädt, da es den Link in einem neuen "Fenster" öffnet.

Es gibt einen Rückruf für die Fenstererstellung, XWalkUIClient.onCreateWindowRequested, aber das enthält keinen Parameter, der die URL enthält, die in dem neuen Fenster geladen wird.

Ich weiß auch, dass der Benutzercode, wenn ein neues Fenster erstellt wird, ein neues XWalkView zum Laden des Zieldokuments instanziieren kann, und ich sollte den benutzerdefinierten Ressourcenclient und UI-Client festlegen.

Was ich bisher versucht:

  • Alle Methoden in XWalkResourceClient und XWalkUIClient mit einem URL-Parameter, sowohl im Herkunfts- und Zielansichten. Entweder werden sie nicht aufgerufen, oder der Parameter ist null oder leer.
  • Geben Sie in XWalkUIClient.onCreateWindowRequested eine Unterklasse von XWalkView zurück, die load() überschreibt, damit sie die URL abfangen kann. Diese Methode wird nicht aufgerufen.

Jeder Vorschlag wird sehr geschätzt. Vielen Dank!

Antwort

1

Ich bin sicher Override sumoOverrideUrlLoading wird die URL in Ihrem HTML abfangen. Ich habe nichts Besonderes, und Code hinzufügen, wie unten:

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; 
     } 
    }); 

Und dann laden Sie die HTML Sie bieten:

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

Wenn ich den Link in der XWalkView klicken, wird shouldOverrideUrlLoading und die Benutzeroberfläche aufgerufen werden unten wie

enter image description here

+0

ist es möglich, diese zu aktivieren, wenn ein a href Link in dem Fußgängerübergang Webview geklickt wird? Wenn ja, wie? – AlexioVay

+0

Mein Beispiel in oben ist das Crosswalk WebView. – Xiaofeng