在浏览器中打开下载的ics文件'返回后,App出现黑屏

app goes to blank screen upon returning from 'open downloaded ics file in browser'

本文关键字:返回 App 浏览器 下载 文件 ics      更新时间:2023-09-26

在我的应用程序中有一个链接,当点击时,生成一个ics日历事件文件,并从控制器返回作为ActionResult/file:

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

链接如下:

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

预期结果是:点击链接,浏览器打开并下载文件。当返回应用程序时,停留在应用程序的同一屏幕上。

这在IOS应用程序,IOS和Android的浏览器中正常工作,但在Android应用程序中不正常。在Android应用程序中,点击链接,浏览器打开下载的文件,但当返回到应用程序时,它显示一个空白页面,我需要点击返回按钮两次才能到达旧页面。不知道为什么?看起来它有导航功能,因为href?

为了防止在应用程序中导航到空白页面,我将<a>更改为<div>,将href=""更改为ng-click=syncCalendar(),并使用$http.post()从返回上述文件的同一控制器获得响应。我得到的响应是文件的内容,当我将其记录到控制台时,它具有正确的内容,在控制台中显示纯文本。应用不再导航到空白页。这是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

然后我从我的应用程序中的javascript打开文件:

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

这也适用于iOS和Android的浏览器。但在android应用程序中测试时不起作用。浏览器未按预期打开。不知道是什么问题,为什么它只在安卓应用程序不工作?

原来这是我的android原生应用....中一个愚蠢的代码行我有这个:

webView.loadUrl("about:blank");

嗯,我一直认为这是一个服务器端问题,没有考虑到本地端。因此,当我删除这段代码时,它就会正常运行。