我的android应用程序监听浏览器意图,以便在用户点击某种类型的URI时捕获它们。更具体地说,当用户点击指向torrent文件的超链接(i.g. http://somewhere/file.torrent)时,我希望我的应用程序打开。
从我的应用程序AndroidManifest.xml中看到我的意图过滤器:
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:mimeType="application/x-bittorrent"
android:scheme="http" />
</intent-filter>
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="*"
android:pathPattern=".*\\.torrent"
android:scheme="http" />
</intent-filter>
只要超链接指向文件位置,这就可以正常工作。 但是 - 有时URL会直接指向文件,并由服务器解释为根据某种类型的ID返回要下载的文件,如此链接http://www.mininova.org/get/13202308,它会返回文件。在这种情况下,我的intent-filters不起作用,android浏览器下载文件而不是打开我的应用程序并传递文件URI的意图。
有没有人知道如何获取文件URI?
由于
答案 0 :(得分:1)
在这些情况下,http响应可能会将标头Content-disposition:
设为attachment;filename=file.torrent
如果是这种情况,浏览器甚至不会抛出意图。