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

海绵宝宝05240

海绵宝宝05240

2016-02-19 09:12

下面是个超简单的android通过蓝牙接收文件打开时无法自动选择合适的应用程序教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~
通过蓝牙接收文件,从历史传输记录打开,无法自动选择合适的应用程序
但是从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);
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
android通过蓝牙接收文件打开时无法自动选择合适的应用程序

通过Push信息来自动启动JAVA移动应用程序

编程语言 网络编程
通过Push信息来自动启动JAVA移动应用程序

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

ASPX接收WINDOWS应用程序以POST方式发来的信息并存成文件

Web开发
ASPX接收WINDOWS应用程序以POST方式发来的信息并存成文件

MAC OS X中如何改变默认打开文件应用程序

电脑入门
MAC OS X中如何改变默认打开文件应用程序

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

怎么解决应用程序无法运行 应用程序无响应怎么办

计算机应用技术
怎么解决应用程序无法运行  应用程序无响应怎么办

android实现获取正在运行的应用程序

编程语言 网络编程
android实现获取正在运行的应用程序

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Excel数据排序很简单,四种方法任你选

Excel数据排序很简单,四种方法任你选

javascript[js]获取url参数的代码

javascript[js]获取url参数的代码
下拉加载更多内容 ↓