手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >android通过蓝牙接收文件打开时无法自动选择合适的应用程序
android通过蓝牙接收文件打开时无法自动选择合适的应用程序
摘要:通过蓝牙接收文件,从历史传输记录打开,无法自动选择合适的应用程序但是从filemanager打开这个新接收的文件,是可以选择对应的应用程序(...

通过蓝牙接收文件,从历史传输记录打开,无法自动选择合适的应用程序

但是从file manager打开这个新接收的文件,是可以选择对应的应用程序(比如video player打开.3gp、.mp4文件)

历史传输记录打开download的文件,是通过接收文件时对方传过来的mime type来选择适合的APP打开该文件

如果出现提示“未支持格式的文件”,或者使用了错误的APP来打开该文件

原因在于发送方发送文件时填的mime type存在问题

如下的log是mtk接收方的log,请注意黄色字体的tag

Bluetooth.OPP(299): opps newTask: [total=801728][result=null][_id=1][peer_addr=00:23:AF:D5:F6:8B][done=0][name=Eternal Blue.mp3][data=/mnt/sdcard/Received File/Eternal Blue.mp3][state=0][mime=audio/mpeg][type=11][uri=null][peer_name=XT502]

mime type是对文件类型的一个描述,有其相关的标准来关联不同类型文件

mime type有误需要先排查发送方问题

1. 发送方为非mtk手机,需确认发送给不同平台的对比手机,是否都能正常打开该文件

2. 发送方为mtk手机,通过第三方安装APK(如第三方gallery发图片)发送文件,需先排查第三方安装APK的问题,传出来的intent所带的mime type有误

3. 发送方为mtk手机,通过自带APK发文件,请提交eservice由mtk处理

需要明确一点,某些对比的接收方没有此问题,是因为某些厂商做法是接收完文件后,会重新检测该文件并生成新的mimetype

如果只有某些特定文件才有问题,可参考此方法从mtk接收方做mimetype转换作为规避方法

xintongpackagesappsBluetoothprofilesoppsrccommediatekbluetoothoppadpOppManager.java

复制代码 代码如下:

oppsStartPushActivity {

...

//add begin

//根据无法识别的mime type来转换

if( mimeType.equals("无法识别的mimetype");

this.mOppsTask.setMimeType("正确的mimetype");

/*

根据后缀名来转换对应的mimetype

String extname = objectName.substring(objname.lastIndexOf("."));

if(extname.equals(".xxx"))

this.mOppsTask.setMimeType("正确的mimetype");

*/

else

//add end

this.mOppsTask.setMimeType(mimeType);

【android通过蓝牙接收文件打开时无法自动选择合适的应用程序】相关文章:

Android 进入设备后台data文件夹的办法

Android UI开发 View自绘控件 分享

Android开发之文件操作模式深入理解

android帮助文档打开慢的三种解决方法

android横竖屏切换时候Activity的生命周期

Android获取通话时间实例分析

android 完全退出应用程序实现代码

android新建草稿删除后下次开机还会显示保存的草稿

android 监听网络状态的变化及实际应用

Android源码学习之工厂方法模式应用及优势介绍

精品推荐
分类导航