抓文件下载?

时间:2009-07-09 07:51:38

标签: android

我希望我的应用能够捕获特定类型文件的下载。 这是AndroidManifest.xml的相应部分:

<uses-permission android:name="android.permission.INTERNET" />

        <activity android:name=".activity.ExeReceiver">
            <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:scheme="http" />
                <data android:host="*" />
                <data android:pathPattern=".*\\.exe" />
            </intent-filter>
        </activity>

现在,打开一个带有.exe文件链接的页面,单击它。下载管理器启动,然后告诉手机不支持该内容。我的活动甚至都没有被调用。

问题是:

1)为什么不调用我的活动?

2)让下载管理员完成工作的正确方法是什么,然后在文件下载完成后得到通知?

TIA。

2 个答案:

答案 0 :(得分:3)

原来

<data android:mimeType="*/*"/>

部分是必需的。 根据 Android Developers Groups该文件必须手动下载Uri: getIntent().getData()

答案 1 :(得分:1)

作为测试,请尝试使用以下代码替换<data android:host="*" />中的通配符

  • 真正的通配符(".*")或
  • 您要测试的实际服务器名称,或
  • 删除整个<data android:host="*" />元素

如果实际的服务器名称有效且通配符不可用,那么这是有道理的,因为文档没有说明你可以使用通配符android:host。但是,如果删除整个元素然后失败,我不确定如何从任意主机捕获文件。希望第一或第三颗子弹可以解决您的问题。