手機適配-魅族手機透過Intent開啟檔案Bug解決方案
下面是開啟檔案的Intent的程式碼片段:
public static Intent makeOpenFileIntent(Context context, String mime, File path) { Intent intent = new Intent(Intent.ACTION_VIEW); LogUtils.v(TAG, "Open file with mime: " + mime); if (StringUtils.isNullOrEmpty(mime)) { intent.setDataAndType(Uri.fromFile(path), "*/*"); } else { intent.setDataAndType(Uri.fromFile(path), mime); } return intent; }
透過Intent請求系統篩選出能開啟目標檔案的Activity,基本都是透過上面這段程式碼來實現的,沒毛病。
使用魅族手機debug後發現,出問題的都是那些 mime 為null的檔案。mime這個引數,即檔案的 MimeType。透過下面的程式碼來獲取:
MimeTypeMap.getSingleton().getMimeTypeFromExtension(String extension);
由此基本可以得出結論,魅族手機發現你傳遞過來的檔案的 MimeType為 /時,並不會彈出所有支援 Intent.ACTION_VIEW的Activity供你選擇,而是直接跳轉到某個系統自帶的應用了。
Context#start...(Intent) 系列方法的工作原理:如果使用的是顯式Intent,就直接去啟動具體的元件;如果使用的是隱式Intent,那麼系統先經過篩選找到所有符合Intent描述資訊的元件,然後顯示符合條件的元件列表供你選擇。其實,隱式Intent最終還是被轉換成了顯示Intent。
實現Activity選擇器
經過上面分析,我們就可以開始實現自定義Activity選擇器了,這個專案的名稱就叫做AppChooser。
先來看一下效果:
引入專案
compile 'io.julian:appchooser:1.0.4'
使用方法,在Activity或Fragment中:
@NonNullprivate AppChooser mAppChooser;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file_infos); // 初始化 AppChooser mAppChooser = AppChooser.with(this); }@Overridepublic void onStart() { super.onStart(); // 繫結 AppChooser mAppChooser.bind(); }@Overridepublic void onStop() { super.onStop(); // 解綁 AppChooser mAppChooser.unbind(); }/** * 開啟檔案 */private void showFile(FileInfo file) { // 傳入File物件 mAppChooser.file(new File(file.getAbsolutePath())).load(); }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/132/viewspace-2812875/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 魅族手機隱私模式怎麼用?魅族手機隱私模式開啟關閉使用方法模式
- 魅族手機onTouchEvent 、onLongClick踩坑GC
- 麥田-魅族手機主題
- 解決HBuilder X識別不了魅族手機的問題UI
- 輕奢拍照手機魅族X8首發開售 新國民手機魅族Note8售1298元
- 魅族HMS是什麼?魅族手機出現HMS怎麼辦?
- 魅族15Plus真機開箱圖賞與評測 魅族史上最後的拍照手機
- 魅族X8怎麼樣?魅族X8手機評測:最便宜的高通驍龍710手機
- 魅族:2023年雙11魅族手機成交額達去年同期5倍 手機周邊配件銷量同比提升665%
- 魅族x8手機應用分屏方法步驟詳解 魅族x8怎麼分屏?
- 魅族x8手機的截圖方法步驟詳解 魅族x8怎麼截圖?
- html檔案怎麼開啟(手機html檔案怎麼開啟)HTML
- 手機端的適配問題
- 適配手機頁面佈局的動態rem方案REM
- 華為手環耳機模式適配模式
- 魅族Note9配置怎麼樣?千元手機魅族Note 9配置引數介紹
- 魅族熬過了2020年,今年就釋出2款手機,支援一下?
- 魅族x8手機錄屏功能和使用方法教程 魅族x8怎麼錄屏?
- adb透過wifi連線手機WiFi
- STL格式檔案用什麼開啟(手機檢視STL檔案工具)
- 透過手機遠端控制計算機方法計算機
- sldprt檔案用什麼軟體開啟(手機sldprt檔案檢視器)
- 華為GPU Turbo適配機型名單 GPU Turbo支援哪些手機GPU
- 透過手機號查詢繫結QQ
- 如何透過Android手機查詢IP地址Android
- 魅族Zero眾籌失敗淪為PPT手機 黃章:預研專案、從未打算量產
- prt檔案用什麼軟體開啟(免費手機prt檔案瀏覽器)瀏覽器
- Win10系統怎麼透過藍芽與手機進行檔案傳輸Win10藍芽
- 手機怎麼掃描檔案?
- 移動端適配問題解決方案
- Launcher3適配oppo手機------出現兩個設定
- win10手機nfc怎麼開啟_win10手機nfc如何開啟Win10
- 下半年的國產手機更刺激:魅族華為小米全要上新旗艦
- 魅族16和魅族15區別對比 魅族15和魅族16哪個更好?
- 魅藍6T拆機圖解評測 魅藍6T全面屏手機做工怎麼樣?圖解
- 魅族雲相簿批量下載方案
- 手機使用python操作圖片檔案Python
- Android 螢幕適配:最全面的解決方案Android