在我的Android应用程序中处理ics / vcs文件,更正意图过滤器

时间:2012-02-16 18:52:54

标签: android mime-types file-extension intentfilter

我已经看过这个问题100多次,但没有一个答案对我有用。我希望我的应用程序能够处理带有ics或vcs扩展名的所有文件,*无论它们来自哪里。 *除此之外,如果他们来自http / https我不想自己下载,我只想让浏览器至少让用户保存它们然后用我的应用程序打开。目前浏览器显示“此手机不支持内容”。

这是我现在所拥有的,但我一直在努力:

        <intent-filter >
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:host="*" />
            <date android:mimeType="text/calendar" />
            <data android:scheme="https" />
        </intent-filter>

有了上述内容,当我点击一个来自我的服务器的https链接,我知道我的服务器正在发送文本/日历mime类型时,droid会询问他们想要用什么应用来打开链接。该列表包含我的应用程序或浏览器。如果我选择我的应用程序,它会运行我的活动并给我Uri。我希望浏览器下载文件,我不想自己下载...同样的方式其他文件类型工作,图像,PDF等。如果我选​​择浏览器,它开始下载,但然后停止使用“此手机不支持的内容”错误。

我也试过这个:

        <intent-filter >
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:host="*" />
            <data android:scheme="file" />
            <data android:pathPattern=".*\\.ics" />
        </intent-filter>

还尝试将方案设置为“内容”,以及我在SO和其他地方发现的许多其他变体。

1 个答案:

答案 0 :(得分:0)

您应该考虑浏览器正在为二进制文件实现此下载行为,您无法通过intent-filter更改它。

其他应用程序(如pdf viewer)声明一个与第二种方法相同的intent-filter(文件扩展名除外)。

因此我建议您自己下载文件。因为它只需要几行代码,所以这不应该是一个大问题。