我有一个处理特定类型文件的Android应用程序。它为MIME类型和文件名模式注册了intent过滤器。这一切都可以从文件管理器中正常工我选择了一个文件,我收到一个适用于该文件的操作列表,我的应用程序在列表中,我选择它并且它可以工作。
但是,当我通过蓝牙将文件发送到设备时,这不起作用。收到文件并正确下载,但从传输页面选择文件什么都不做(尽管我仍然可以使用文件管理器在/ sdcard / downloads / bluetooth中找到下载的文件并从那里运行)。该日志包含:
V/BluetoothOppUtility( 565): Get data from db:/mnt/sdcard/downloads/bluetooth/foo.appnull00:11:22:33:44:55
E/BluetoothOppUtility( 565): ERROR: Para fileName ==null, or mimetype == null
(这里的文件名是foo.app。)
看起来它决定该文件没有MIME类型并放弃,而不是广播要求基于文件名的匹配的意图。
这是关于HTC Desire的Froyo,我知道HTC一直在修补蓝牙堆栈(因为Android不允许将任意文件传送到设备)。有谁知道我怎么能做这个工作?传送.jpg和.png文件可以正常工作......
答案 0 :(得分:2)
调查显示,如果蓝牙堆栈没有从发件人接收MIME类型,则使用android.webkit.MimeTypeMap类确定MIME类型。此类具有扩展名和MIME类型的硬编码表。这意味着,如果不向Google发送补丁并等待下一个版本,则无法注册其他扩展程序。