Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> android通過藍牙接收文件打開時無法自動選擇合適的應用程序

android通過藍牙接收文件打開時無法自動選擇合適的應用程序

編輯: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轉換作為規避方法

\xintong\packages\apps\Bluetooth\profiles\opp\src\com\mediatek\bluetooth\opp\adp\OppManager.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);
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved