亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android編程開發之打開文件的Intent及使用方法

2020-04-11 11:22:42
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程開發之打開文件的Intent及使用方法。分享給大家供大家參考,具體如下:

在寫文件管理系統時會用到各種打開不同格式的文件的需求,由于Android系統默認內置了一些可以打開的系統應用,但還是不能滿足需求,比如打開視頻文件、word等,需要安裝相應的播放軟件才可以使用,這時程序會通過Intent查找可以使用的軟件實現通過代碼打開一個文件需要2部分,一部分是要獲取到不同文件的后綴,以便根據需求匹配相應的Intent,另一個就是不同格式的文件打開的Intent不同

1、在values目錄下定義后綴數組文件fileendings

<?xml version="1.0" encoding="utf-8"?> <resources> <array name="fileEndingImage"> <item>.png</item> <item>.gif</item> <item>.jpg</item> <item>.jpeg</item> <item>.bmp</item> </array> <array name="fileEndingAudio"> <item>.mp3</item> <item>.wav</item> <item>.ogg</item> <item>.midi</item> </array> <array name="fileEndingVideo"> <item>.mp4</item> <item>.rmvb</item> <item>.avi</item> <item>.flv</item> </array> <array name="fileEndingPackage"> <item>.jar</item> <item>.zip</item> <item>.rar</item> <item>.gz</item> <item>.apk</item> <item>.img</item> </array> <array name="fileEndingWebText"> <item>.htm</item> <item>.html</item> <item>.php</item> <item>.jsp</item> </array> <array name="fileEndingText"> <item>.txt</item> <item>.java</item> <item>.c</item> <item>.cpp</item> <item>.py</item> <item>.xml</item> <item>.json</item> <item>.log</item> </array> <array name="fileEndingWord"> <item>.doc</item> <item>.docx</item> </array> <array name="fileEndingExcel"> <item>.xls</item> <item>.xlsx</item> </array> <array name="fileEndingPPT"> <item>.ppt</item> <item>.pptx</item> </array> <array name="fileEndingPdf"> <item>.p<?xml version="1.0" encoding="utf-8"?> <resources> <array name="fileEndingImage"> <item>.png</item> <item>.gif</item> <item>.jpg</item> <item>.jpeg</item> <item>.bmp</item> </array> <array name="fileEndingAudio"> <item>.mp3</item> <item>.wav</item> <item>.ogg</item> <item>.midi</item> </array> <array name="fileEndingVideo"> <item>.mp4</item> <item>.rmvb</item> <item>.avi</item> <item>.flv</item> </array> <array name="fileEndingPackage"> <item>.jar</item> <item>.zip</item> <item>.rar</item> <item>.gz</item> <item>.apk</item> <item>.img</item> </array> <array name="fileEndingWebText"> <item>.htm</item> <item>.html</item> <item>.php</item> <item>.jsp</item> </array> <array name="fileEndingText"> <item>.txt</item> <item>.java</item> <item>.c</item> <item>.cpp</item> <item>.py</item> <item>.xml</item> <item>.json</item> <item>.log</item> </array> <array name="fileEndingWord"> <item>.doc</item> <item>.docx</item> </array> <array name="fileEndingExcel"> <item>.xls</item> <item>.xlsx</item> </array> <array name="fileEndingPPT"> <item>.ppt</item> <item>.pptx</item> </array> <array name="fileEndingPdf"> <item>.pdf</item> </array> </resources>df</item> </array> </resources>

2、定義OpenFiles工具類,只需傳輸File參數即可,然后通過返回的Intent打開文件

public class OpenFiles { //android獲取一個用于打開HTML文件的intent public static Intent getHtmlFileIntent(File file) { Uri uri = Uri.parse(file.toString()).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(file.toString()).build(); Intent intent = new Intent("android.intent.action.VIEW"); intent.setDataAndType(uri, "text/html"); return intent; } //android獲取一個用于打開圖片文件的intent public static Intent getImageFileIntent(File file) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "image/*"); return intent; } //android獲取一個用于打開PDF文件的intent public static Intent getPdfFileIntent(File file) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "application/pdf"); return intent; } //android獲取一個用于打開文本文件的intent public static Intent getTextFileIntent(File file) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "text/plain"); return intent; } //android獲取一個用于打開音頻文件的intent public static Intent getAudioFileIntent(File file) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("oneshot", 0); intent.putExtra("configchange", 0); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "audio/*"); return intent; } //android獲取一個用于打開視頻文件的intent public static Intent getVideoFileIntent(File file) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("oneshot", 0); intent.putExtra("configchange", 0); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "video/*"); return intent; } //android獲取一個用于打開CHM文件的intent public static Intent getChmFileIntent(File file) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "application/x-chm"); return intent; } //android獲取一個用于打開Word文件的intent public static Intent getWordFileIntent(File file) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "application/msword"); return intent; } //android獲取一個用于打開Excel文件的intent public static Intent getExcelFileIntent(File file) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "application/vnd.ms-excel"); return intent; } //android獲取一個用于打開PPT文件的intent public static Intent getPPTFileIntent(File file) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "application/vnd.ms-powerpoint"); return intent; } //android獲取一個用于打開apk文件的intent public static Intent getApkFileIntent(File file) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); return intent; } }

3、定義用于檢查要打開的文件的后綴是否在遍歷后綴數組中

private boolean checkEndsWithInStringArray(String checkItsEnd, String[] fileEndings){ for(String aEnd : fileEndings){ if(checkItsEnd.endsWith(aEnd)) return true; } return false; }

4、通過調用OpenFiles類返回的Intent,打開相應的文件

if(currentPath!=null&¤tPath.isFile()) { String fileName = currentPath.toString(); Intent intent; if(checkEndsWithInStringArray(fileName, getResources(). getStringArray(R.array.fileEndingImage))){ intent = OpenFiles.getImageFileIntent(currentPath); startActivity(intent); }else if(checkEndsWithInStringArray(fileName, getResources(). getStringArray(R.array.fileEndingWebText))){ intent = OpenFiles.getHtmlFileIntent(currentPath); startActivity(intent); }else if(checkEndsWithInStringArray(fileName, getResources(). getStringArray(R.array.fileEndingPackage))){ intent = OpenFiles.getApkFileIntent(currentPath); startActivity(intent); }else if(checkEndsWithInStringArray(fileName, getResources(). getStringArray(R.array.fileEndingAudio))){ intent = OpenFiles.getAudioFileIntent(currentPath); startActivity(intent); }else if(checkEndsWithInStringArray(fileName, getResources(). getStringArray(R.array.fileEndingVideo))){ intent = OpenFiles.getVideoFileIntent(currentPath); startActivity(intent); }else if(checkEndsWithInStringArray(fileName, getResources(). getStringArray(R.array.fileEndingText))){ intent = OpenFiles.getTextFileIntent(currentPath); startActivity(intent); }else if(checkEndsWithInStringArray(fileName, getResources(). getStringArray(R.array.fileEndingPdf))){ intent = OpenFiles.getPdfFileIntent(currentPath); startActivity(intent); }else if(checkEndsWithInStringArray(fileName, getResources(). getStringArray(R.array.fileEndingWord))){ intent = OpenFiles.getWordFileIntent(currentPath); startActivity(intent); }else if(checkEndsWithInStringArray(fileName, getResources(). getStringArray(R.array.fileEndingExcel))){ intent = OpenFiles.getExcelFileIntent(currentPath); startActivity(intent); }else if(checkEndsWithInStringArray(fileName, getResources(). getStringArray(R.array.fileEndingPPT))){ intent = OpenFiles.getPPTFileIntent(currentPath); startActivity(intent); }else { showMessage("無法打開,請安裝相應的軟件!"); } }else { showMessage("對不起,這不是文件!"); } 

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区在线| 欧美专区在线播放| 日韩美女主播视频| 一区二区三区四区在线观看视频| 欧美国产日韩精品| 成人在线视频福利| 88xx成人精品| 国产精品旅馆在线| 国产不卡一区二区在线播放| 亚洲精品小视频在线观看| 日韩电影免费观看在线| 欧美成人亚洲成人| 日韩中文在线不卡| 国产精品久久国产精品99gif| 亚洲精品一区中文| 国产美女主播一区| 色多多国产成人永久免费网站| 亚洲精品动漫100p| 精品久久久久久中文字幕| 国产精品久久久久久久久久久新郎| 国产精品高清在线| 国产亚洲欧美日韩一区二区| 午夜精品一区二区三区在线| 亚洲久久久久久久久久| 亚洲深夜福利视频| 欧美精品情趣视频| 国产视频亚洲精品| 91国内精品久久| 亚洲天堂av在线免费观看| 人人做人人澡人人爽欧美| 国产精品久久久久77777| 国产精品美女免费看| 在线观看国产精品日韩av| 亚洲一二在线观看| 国产精品久久久久久久久久99| 久久综合亚洲社区| 国产人妖伪娘一区91| 国产91成人在在线播放| 日韩视频在线观看免费| 日韩电影中文字幕| 亚洲性线免费观看视频成熟| 久久久国产一区二区| 精品露脸国产偷人在视频| 日韩黄在线观看| 在线国产精品视频| 最新的欧美黄色| 国产欧洲精品视频| 国产精品偷伦一区二区| 亚洲97在线观看| 这里只有精品在线观看| 91亚洲精品在线观看| 日本中文字幕成人| 国产精品一二区| 欧美日韩性视频| 日韩精品极品视频| 亚洲一区二区久久久久久久| 国产精品日韩欧美大师| 欧美国产日韩一区二区| 欧美野外猛男的大粗鳮| 欧美激情三级免费| 成人欧美一区二区三区黑人孕妇| 日韩视频第一页| 国产亚洲精品久久| 97婷婷大伊香蕉精品视频| 亚洲性夜色噜噜噜7777| 最近2019年日本中文免费字幕| 日韩视频精品在线| 九九热这里只有精品免费看| 国产午夜精品一区理论片飘花| 亚洲精品欧美极品| 成人av番号网| 91免费精品国偷自产在线| 日韩电影中文 亚洲精品乱码| 欧美性videos高清精品| 国产欧美亚洲视频| 国产日韩欧美电影在线观看| 国产啪精品视频| 国产精品扒开腿做爽爽爽视频| 国产精品视频公开费视频| 91地址最新发布| 国产精品www| 久久久国产成人精品| 亚洲精品一区二三区不卡| 欧美视频国产精品| 国产成人在线播放| 成人妇女淫片aaaa视频| 国产精品入口福利| 亚州av一区二区| 欧美激情国内偷拍| 4k岛国日韩精品**专区| 欧美性色视频在线| 91精品国产电影| 欧洲日本亚洲国产区| 97人人爽人人喊人人模波多| 91精品久久久久久久久久另类| 日韩精品一二三四区| 国产一区二区三区18| 欧美日韩国产精品一区| 亚洲欧美一区二区三区四区| 欧美性极品xxxx做受| 久久精品精品电影网| 成人福利网站在线观看| 91精品啪在线观看麻豆免费| 在线视频欧美日韩精品| 91久久嫩草影院一区二区| 欧美性猛交xxxx免费看久久久| 日韩大陆欧美高清视频区| 亚洲电影免费观看高清完整版在线| 亚洲欧美在线一区| 国产欧美精品va在线观看| 国产精品视频地址| 96精品久久久久中文字幕| 国产97色在线|日韩| 久久久久久欧美| 欧美日韩一区二区精品| 欧美高清第一页| 国产日韩欧美电影在线观看| 国产一区二区香蕉| 欧美乱大交xxxxx| 亚洲国产高潮在线观看| 精品无人区太爽高潮在线播放| 亚洲欧美精品在线| 亚洲天堂免费在线| 日韩a**站在线观看| 精品视频在线播放| 97av视频在线| 欧美老女人www| 成人午夜在线影院| 国产精品最新在线观看| 国产精品免费久久久| 97**国产露脸精品国产| 中文字幕日韩在线视频| 欧美成人黑人xx视频免费观看| 久久99青青精品免费观看| 久久久国产在线视频| 欧美日韩亚洲激情| 97在线免费视频| 奇米影视亚洲狠狠色| 成人乱人伦精品视频在线观看| 午夜精品一区二区三区在线播放| 国产精品女主播视频| 亚洲美腿欧美激情另类| 日韩精品在线免费观看| 国产脚交av在线一区二区| 亚洲国产成人在线视频| 国产mv免费观看入口亚洲| 色综合色综合网色综合| 在线播放精品一区二区三区| 精品久久久久久中文字幕一区奶水| 国产亚洲精品成人av久久ww| 国产欧美最新羞羞视频在线观看| 91精品在线观| 亚洲欧美日本伦理| 综合136福利视频在线| 中文字幕日韩欧美在线| 成人激情视频小说免费下载| …久久精品99久久香蕉国产| 日韩免费在线观看视频| 日韩久久免费视频| 久久欧美在线电影| 亚洲片在线观看| 亚洲国产成人在线视频| 国产精品久久久久久久久借妻| 久久国产一区二区三区|