我希望我的应用能够捕获特定类型文件的下载。 这是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。
答案 0 :(得分:3)
原来
<data android:mimeType="*/*"/>
部分是必需的。
根据
Android Developers Groups该文件必须手动下载Uri: getIntent().getData()
。
答案 1 :(得分:1)
作为测试,请尝试使用以下代码替换<data android:host="*" />
中的通配符
".*"
)或<data android:host="*" />
元素如果实际的服务器名称有效且通配符不可用,那么这是有道理的,因为文档没有说明你可以使用通配符android:host
。但是,如果删除整个元素然后失败,我不确定如何从任意主机捕获文件。希望第一或第三颗子弹可以解决您的问题。