2016-10-19 1 views
0

Es gibt einen Link in meiner app, wenn darauf geklickt wird, wird eine ics Kalenderereignisdatei erzeugt und zurückgegeben von der Steuerung als Action/Datei:App gehen zu leeren Bildschirm nach der Rückkehr von ‚öffnet heruntergeladene ics-Datei im Browser‘

return File(memoryStream, "text/calendar", "calendar.ics"); 

der Link wie folgt aussieht:

<a href="/controllerName/MethodName?param=xyz">link</a> 

erwarten Ergebnis: klicken Sie auf den Link, wird Browser mit der Datei heruntergeladen geöffnet. Bei der Rückkehr zur App bleibt auf dem gleichen Bildschirm in der App.

Dies funktioniert wie erwartet in iOS-App, Browsern in iOS und Android, aber nicht in Android-App. In Android-App, klicken Sie auf den Link, der Browser ist mit der heruntergeladenen Datei geöffnet, aber wenn zur App zurückkehren, es eine leere Seite anzeigen, muss ich zweimal auf Zurück-Taste klicken, um die alte Seite zu erreichen. Nicht sicher warum? Scheint, als ob es eine Navigation wegen der href macht?

die auf leere Seite in der App navigiert zu vermeiden, änderte ich <a> zu <div> und href=""-ng-click=syncCalendar(), und verwenden Sie $http.post() die Antwort vom gleichen Controller zu erhalten, die die Datei oben zurückgibt. Die Antwort, die ich bekomme, ist der Inhalt der Datei. Wenn ich sie an der Konsole anmelde, hat sie den richtigen Inhalt und zeigt Klartext in der Konsole an. Und die App navigiert nicht mehr zur leeren Seite. Dies ist der Inhalt der response:

BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//ddaysoftware.com//NONSGML DDay.iCal 1.0//EN 
BEGIN:VEVENT 
DESCRIPTION:............... 
DTEND:20161022T110000 
DTSTAMP:20161020T145537Z 
DTSTART:20161022T104500 
LOCATION:123 Test Drive\nNY\, NY 123456 
SEQUENCE:0 
SUMMARY:xyz 
UID:123-56h-78di-9dfgh 
END:VEVENT 
END:VCALENDAR 

Dann öffne ich die Datei aus dem Javascript in meiner app mit:

window.open("data:text/calendar;charset=utf8," + escape(response)); 

Dies auch in beiden Browsern in iOS und Android funktioniert. Aber funktioniert nicht, wenn in Android App getestet. Der Browser wird nicht wie erwartet geöffnet. Nicht sicher, was ist das Problem, warum es funktioniert nur nicht in Android App?

Antwort

0

Stellt sich heraus, es ist eine dumme Zeile Code in meinem Android native App .... ich dies hatte:

webView.loadUrl("about:blank"); 

uhhh, habe ich immer gedacht, es ist eine serverseitige Ausgabe, sah sie nicht an native Seite. In dem Moment, in dem ich diesen Code entferne, verhält es sich gut.

Verwandte Themen