Android打開文件的Intent操作步驟

在寫文件管理系統時會用到各種打開不同格式的文件的需求,由於Android系統默認內置了一些可以打開的系統應用,但還是不能滿足需求,比如打開視頻文 件、word等,需要安裝相應的播放軟體才可以使用,這時程序會通過Intent查找可以使用的軟體實現通過代碼打開一個文件需要2部分,一部分是要獲取 到不同文件的後綴,以便根據需求匹配相應的Intent,另一個就是不同格式的文件打開的Intent不同1、在values目錄下定義後綴數組文件 fileendingsView Code  1     <?xml version="1.0" encoding="utf-8"?>  2     <resources>  3     <array name="fileEndingImage">  4     <item>.png</item>  5     <item>.gif</item>  6     <item>.jpg</item>  7     <item>.jpeg</item>  8     <item>.bmp</item>  9     </array>10     <array name="fileEndingAudio">11     <item>.mp3</item>12     <item>.wav</item>13     <item>.ogg</item>14     <item>.midi</item>15     </array>16     <array name="fileEndingVideo">17     <item>.mp4</item>18     <item>.rmvb</item>19     <item>.avi</item>20     <item>.flv</item>21     </array>22     <array name="fileEndingPackage">23     <item>.jar</item>24     <item>.zip</item>25     <item>.rar</item>26     <item>.gz</item>27     <item>.apk</item>28     <item>.img</item>29     </array>30     <array name="fileEndingWebText">31     <item>.htm</item>32     <item>.html</item>33     <item>.php</item>34     <item>.jsp</item>35     </array>36     <array name="fileEndingText">37     <item>.txt</item>38     <item>.java</item>39     <item>.c</item>40     <item>.cpp</item>41     <item>.py</item>42     <item>.xml</item>43     <item>.json</item>44     <item>.log</item>45     </array>46     <array name="fileEndingWord">47     <item>.doc</item>48     <item>.docx</item>49     </array>50     <array name="fileEndingExcel">51     <item>.xls</item>52     <item>.xlsx</item>53     </array>54     <array name="fileEndingPPT">55     <item>.ppt</item>56     <item>.pptx</item>57     </array>58     59     <array name="fileEndingPdf">60     <item>.p<?xml version="1.0" encoding="utf-8"?>61     <resources>62     <array name="fileEndingImage">63     <item>.png</item>64     <item>.gif</item>65     <item>.jpg</item>66     <item>.jpeg</item>67     <item>.bmp</item>68     </array>69     <array name="fileEndingAudio">70     <item>.mp3</item>71     <item>.wav</item>72     <item>.ogg</item>73     <item>.midi</item>74     </array>75     <array name="fileEndingVideo">76     <item>.mp4</item>77     <item>.rmvb</item>78     <item>.avi</item>79     <item>.flv</item>80     </array>81     <array name="fileEndingPackage">82     <item>.jar</item>83     <item>.zip</item>84     <item>.rar</item>85     <item>.gz</item>86     <item>.apk</item>87     <item>.img</item>88     </array>89     <array name="fileEndingWebText">90     <item>.htm</item>91     <item>.html</item>92     <item>.php</item>93     <item>.jsp</item>94     </array>

95     <array name="fileEndingText">96     <item>.txt</item>97     <item>.java</item>98     <item>.c</item>99     <item>.cpp</item>100     <item>.py</item>101     <item>.xml</item>102     <item>.json</item>103     <item>.log</item>104     </array>105     <array name="fileEndingWord">106     <item>.doc</item>107     <item>.docx</item>108     </array>109     <array name="fileEndingExcel">110     <item>.xls</item>111     <item>.xlsx</item>112     </array>113     <array name="fileEndingPPT">114     <item>.ppt</item>115     <item>.pptx</item>116     </array>117     118     <array name="fileEndingPdf">119     <item>.pdf</item>120     </array>121     </resources>df</item>122     </array>123     </resources>2、定義OpenFiles工具類,只需傳輸File參數即可,然後通過返回的Intent打開文件View Code  1     public class OpenFiles {  2     //android獲取一個用於打開HTML文件的intent  3     public static Intent getHtmlFileIntent(File file)  4     {  5     Uri uri = Uri.parse(file.toString()).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(file.toString()).build();  6     Intent intent = new Intent("android.intent.action.VIEW");  7     intent.setDataAndType(uri, "text/html");  8     return intent;  9     }10     //android獲取一個用於打開圖片文件的intent11     public static Intent getImageFileIntent(File file)12     {13     Intent intent = new Intent("android.intent.action.VIEW");14     intent.addCategory("android.intent.category.DEFAULT");15     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);16     Uri uri = Uri.fromFile(file);17     intent.setDataAndType(uri, "image/*");18     return intent;19     }20     //android獲取一個用於打開PDF文件的intent21     public static Intent getPdfFileIntent(File file)22     {23     Intent intent = new Intent("android.intent.action.VIEW");24     intent.addCategory("android.intent.category.DEFAULT");25     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);26     Uri uri = Uri.fromFile(file);27     intent.setDataAndType(uri, "application/pdf");28     return intent;29     }30     //android獲取一個用於打開文本文件的intent31     public static Intent getTextFileIntent(File file)32     {33     Intent intent = new Intent("android.intent.action.VIEW");34     intent.addCategory("android.intent.category.DEFAULT");35     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);36     Uri uri = Uri.fromFile(file);37     intent.setDataAndType(uri, "text/plain");38     return intent;39     }40     41     //android獲取一個用於打開音頻文件的intent42     public static Intent getAudioFileIntent(File file)43     {44     Intent intent = new Intent("android.intent.action.VIEW");45     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);46     intent.putExtra("oneshot", 0);47     intent.putExtra("configchange", 0);48     Uri uri = Uri.fromFile(file);49     intent.setDataAndType(uri, "audio/*");50     return intent;51     }52     //android獲取一個用於打開視頻文件的intent53     public static Intent getVideoFileIntent(File file)54     {55     Intent intent = new Intent("android.intent.action.VIEW");56     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);57     intent.putExtra("oneshot", 0);58     intent.putExtra("configchange", 0);59     Uri uri = Uri.fromFile(file);60     intent.setDataAndType(uri, "video/*");61     return intent;62     }63     64     65     //android獲取一個用於打開CHM文件的intent66     public static Intent getChmFileIntent(File file)67     {68     Intent intent = new Intent("android.intent.action.VIEW");69     intent.addCategory("android.intent.category.DEFAULT");70     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);71     Uri uri = Uri.fromFile(file);72     intent.setDataAndType(uri, "application/x-chm");73     return intent;74     }75     76     77     //android獲取一個用於打開Word文件的intent78     public static Intent getWordFileIntent(File file)79     {80     Intent intent = new Intent("android.intent.action.VIEW");81     intent.addCategory("android.intent.category.DEFAULT");82     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);83     Uri uri = Uri.fromFile(file);84     intent.setDataAndType(uri, "application/msword");85     return intent;86     }87     //android獲取一個用於打開Excel文件的intent88     public static Intent getExcelFileIntent(File file)89     {

90     Intent intent = new Intent("android.intent.action.VIEW");91     intent.addCategory("android.intent.category.DEFAULT");92     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);93     Uri uri = Uri.fromFile(file);94     intent.setDataAndType(uri, "application/vnd.ms-excel");95     return intent;96     }97     //android獲取一個用於打開PPT文件的intent98     public static Intent getPPTFileIntent(File file)99     {100     Intent intent = new Intent("android.intent.action.VIEW");101     intent.addCategory("android.intent.category.DEFAULT");102     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);103     Uri uri = Uri.fromFile(file);104     intent.setDataAndType(uri, "application/vnd.ms-powerpoint");105     return intent;106     }107     //android獲取一個用於打開apk文件的intent108     public static Intent getApkFileIntent(File file)109     {110     Intent intent = new Intent();111     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);112     intent.setAction(android.content.Intent.ACTION_VIEW);113     intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");114     return intent;115     }116     117     118     }3、定義用於檢查要打開的文件的後綴是否在遍歷後綴數組中View Code1     private boolean checkEndsWithInStringArray(String checkItsEnd,2     String[] fileEndings){3     for(String aEnd : fileEndings){4     if(checkItsEnd.endsWith(aEnd))5     return true;6     }7     return false;8     }4、通過調用OpenFiles類返回的Intent,打開相應的文件View Code1     if(currentPath!=null&¤tPath.isFile())2     {3     String fileName = currentPath.toString();4     Intent intent;5     if(checkEndsWithInStringArray(fileName, getResources().6     getStringArray(R.array.fileEndingImage))){7     intent = OpenFiles.getImageFileIntent(currentPath);8     startActivity(intent);9     }else if(checkEndsWithInStringArray(fileName, getResources().10     getStringArray(R.array.fileEndingWebText))){11     intent = OpenFiles.getHtmlFileIntent(currentPath);12     startActivity(intent);13     }else if(checkEndsWithInStringArray(fileName, getResources().14     getStringArray(R.array.fileEndingPackage))){15     intent = OpenFiles.getApkFileIntent(currentPath);16     startActivity(intent);17     18     }else if(checkEndsWithInStringArray(fileName, getResources().19     getStringArray(R.array.fileEndingAudio))){20     intent = OpenFiles.getAudioFileIntent(currentPath);21     startActivity(intent);22     }else if(checkEndsWithInStringArray(fileName, getResources().23     getStringArray(R.array.fileEndingVideo))){24     intent = OpenFiles.getVideoFileIntent(currentPath);25     startActivity(intent);26     }else if(checkEndsWithInStringArray(fileName, getResources().27     getStringArray(R.array.fileEndingText))){28     intent = OpenFiles.getTextFileIntent(currentPath);29     startActivity(intent);30     }else if(checkEndsWithInStringArray(fileName, getResources().31     getStringArray(R.array.fileEndingPdf))){32     intent = OpenFiles.getPdfFileIntent(currentPath);33     startActivity(intent);34     }else if(checkEndsWithInStringArray(fileName, getResources().35     getStringArray(R.array.fileEndingWord))){36     intent = OpenFiles.getWordFileIntent(currentPath);37     startActivity(intent);38     }else if(checkEndsWithInStringArray(fileName, getResources().39     getStringArray(R.array.fileEndingExcel))){40     intent = OpenFiles.getExcelFileIntent(currentPath);41     startActivity(intent);42     }else if(checkEndsWithInStringArray(fileName, getResources().43     getStringArray(R.array.fileEndingPPT))){44     intent = OpenFiles.getPPTFileIntent(currentPath);45     startActivity(intent);46     }else47     {48     showMessage("無法打開,請安裝相應的軟體!");49     }50     }else51     {52     showMessage("對不起,這不是文件!");53     }

相關文章

  1. android系統創建更多存儲空間操作步驟

    1.在手機開機界面點擊下方的"全部應用程式"按鈕. 2.在全部應用程式中點擊"設置"圖標. 3.在設置菜單界面中點擊"存儲"項目. 4.在存 ...
  2. 百度雲管家下載文件的具體操作步驟是什麼?

    百度雲管家下載文件的具體操作步驟是什麼?百度雲管家如何操作?今天我給大家詳細的講解在具體操作步驟. 工具/原料 電腦 方法/步驟 打開百度雲管家,輸入帳號密碼,點擊登陸. 選中其中想要下載的文件,雙擊 ...
  3. Android 5.0.1 開啟色彩反轉的操作步驟

    Android 5.0.1 開啟色彩反轉的操作步驟 方法/步驟 在手機主螢幕點擊全部應用程式按鍵,再點擊"設置"圖標. 點擊"輔助功能"選項. 將"色 ...
  4. android 通話中同步錄音功能操作步驟

    1.在手機開機界面點擊"撥號"按鈕. 2.在撥號界面撥電話號碼,接通電話. 3.在通話中,點擊右下角"三點"菜單鍵. 4.在彈出菜單中,點擊"開始錄製 ...
  5. Android APP二次打包操作步驟介紹

    Android APP的二次打包現象已經屢見不鮮,為何"打包黨"就吃准了Android平台,二次打包的操作過程到底有多簡單?本文將從Android apk的結構.二次打包的工具.步 ...
  6. Android 4.4.4 在相冊中銳度特效的操作步驟

    Android 4.4.4 在相冊中銳度特效的操作步驟 方法/步驟 在手機主螢幕點擊全部應用程式按鍵,再點擊"相冊"圖標. 點開您的照片集. 點擊您要編輯的照片. 在打開的照片任意 ...
  7. 打開文件位置彈出網頁怎麼操作?

    在電腦上面當點擊一些連結或頁面之後,就會在電腦的桌面上面自動的出現一些圖標.但是這些圖標並不是和之前的圖標一樣.當準備卸載它的時,在點擊打開文件位置時它並不是出現它的目錄,而是直接跳轉到連結直接打開一 ...
  8. 用sz工具下載遠程主機文件操作步驟

    對於linux的主機,如果要遠程下載文件,是一定要裝個FTP類的客戶端,或支持SSH的SFTP工具,其實只要能遠程登錄,就能下載 工具/原料 secureCRT 方法/步驟 打開secureCRT,通 ...
  9. android 添加HTC帳戶和同步設置操作步驟

    1.在手機開機界面點擊下方的"全部應用程式"按鈕. 2.在全部應用程式中點擊"設置"圖標. 3.在手機的"設置"菜單中進入"帳戶與 ...
  10. 在線pdf轉換器把word轉為pdf文件的操作步驟

    有需求就有解決方法,只要我們有這樣的需求,現在我們可以很方便的把不同格式的文件進行互相的轉換了,如word和pdf文件進行相互的轉的我,但是一般都需要安裝轉換器,那麼有沒有在不安裝任何軟體的前提下對文 ...
  11. Android 4.4.4 在相冊中對比度特效的操作步驟

    Android 4.4.4相冊美化:中對比度特效:美化操作步驟 方法/步驟 在手機主螢幕點擊全部應用程式按鍵,再點擊"相冊"圖標. 開您的照片集. 點擊您要編輯的照片. 在打開的照 ...
  12. 將pdf文件密碼移除的操作步驟,一看就會

    工作中難免會遇到一些帶有密碼的PDF文件,是不是很煩心,這是去掉PDF密碼保護,使pdf文件可以進行編輯.複製.列印.移除PDF文檔密碼的軟體. 工具/原料 pdf文件 pdf轉換器 方法/步驟 百度 ...
  13. C#如何使用文件操作控制項 [打開文件/保存文件]

    在C#編程中,經常會有對文件的一些操作,這些操作都可以用C#的文件控制項來很方便的搞定,這些控制項就是[OpenFileDialog]打開文件對話框控制項和[SaveFileDialog]保存文件對話框控制項 ...
  14. android系統開啟手機自動備份功能操作步驟

    1.在手機開機界面點擊下方的"全部應用程式"按鈕. 2.在全部應用程式中點擊"設置"圖標. 3.在設置菜單界面中點擊"備份和重置"項目. 4 ...
  15. WIN7系統將文件或目錄隱藏的操作步驟

    有時需要將一些文件或目錄進行隱藏,可以參照如下步驟操作. 工具/原料 計算機 WIN7作業系統 方法/步驟 如下圖操作步驟,首先打開計算機界面,在彈出窗口的菜單中點擊"工具"菜單. ...
  16. rz命令上傳文件操作步驟

    對於linux的主機,如果要上傳文件,是一定要裝個FTP類的客戶端,只要有SSH客戶端一樣可以作到. 工具/原料 secureCRT 方法/步驟 打開secureCRT,通過SSH連到至遠程linux ...
  17. Android 4.4.4 在相冊中白平衡特效的操作步驟

    Android 4.4.4 相冊美化:相冊中白平衡特效:美化操作步驟 方法/步驟 在手機主螢幕點擊全部應用程式按鍵,再點擊"相冊"圖標. 點開您的照片集. 點擊您要編輯的照片 在打 ...
  18. 用迅捷pdf轉換器把word文件轉pdf的操作步驟

    如今各種各樣的軟體不斷出現,不斷的改變和方便著我們的辦公方式和習慣,不斷的提升著我們的工作效率,如果是在以前我們可能不知道怎麼能很好的把你的word以Pdf的格式保存或者是發布出去,而現在就不一樣了, ...
  19. Android音頻可視化操作步驟

    public class FFTActivity extends Activity implements OnClickListener{        private Button button;  ...
  20. 如何打開dwg文件進行編輯操作

    一般剛接觸DWG文件的朋友們,可能都是一臉懵,根本就不知道該如何進行操作,往往都會耽誤很多時間,其實在網上搜尋編輯.修改的方法有很多,但是不知道該怎麼進行選擇,所以說下面小編就給大家介紹如何打開dwg ...