手機適配-魅族手機透過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
- 手機端頁面自適應解決方案
- 魅族手機語音助手升級後無法使用的解決方法
- 魅族手機中遮蔽ListView下拉懸停方法View
- 魅族X8怎麼樣?魅族X8手機評測:最便宜的高通驍龍710手機
- 適配手機頁面佈局的動態rem方案REM
- html檔案怎麼開啟(手機html檔案怎麼開啟)HTML
- 魅族15Plus真機開箱圖賞與評測 魅族史上最後的拍照手機
- 魅族手機已經來了 智慧手錶還會遠嗎?
- 魅族智慧手錶何時釋出?魅族智慧手錶面世?
- 魅族x8手機應用分屏方法步驟詳解 魅族x8怎麼分屏?
- 在android手機上開啟html檔案AndroidHTML
- 魅族智慧手錶值得期待!魅族智慧手錶何時釋出?
- 魅族x8手機的截圖方法步驟詳解 魅族x8怎麼截圖?
- 魅族手機將獲安卓5.0更新 全新Flyme下月推送安卓
- 魅藍S6全面屏手機拆機圖解 魅藍S6手機做工如何?圖解
- iPhone X 適配手Q H5 頁面通用解決方案iPhoneH5
- 魅族手環H1值得買嗎?魅族手環深度評測
- 魅族黃章:魅藍新品手機將於明年一月釋出
- Android使用RecycleView實現魅族手機通訊錄介面AndroidView
- 魅族錘子口水戰背後:智慧手機紅利不再
- 2.14魅族表白 確認牽手Ubuntu或推新機Ubuntu
- 透過手機遠端控制計算機方法計算機
- 搭載十核處理器 魅族全新系列手機曝光
- STL格式檔案用什麼開啟(手機檢視STL檔案工具)
- adb透過wifi連線手機WiFi
- 手機檔案加密方法加密
- 魅族確定Flyme本週適配Android 5.0Android
- 魅族x8手機錄屏功能和使用方法教程 魅族x8怎麼錄屏?
- 蘋果手機on繫結click事件失效解決方案蘋果事件
- sldprt檔案用什麼軟體開啟(手機sldprt檔案檢視器)
- 魅族釋出PRO5手機 兩大智慧生態配件
- 移動端(手機端)頁面自適應解決方案—rem佈局篇REM
- 透過手機號查詢繫結QQ
- 魅族智慧手環H1怎麼樣?魅族智慧手環H1值得買嗎?