栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android编程开发之打开文件的Intent及使用方法

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android编程开发之打开文件的Intent及使用方法

本文实例讲述了Android编程开发之打开文件的Intent及使用方法。分享给大家供大家参考,具体如下:

在写文件管理系统时会用到各种打开不同格式的文件的需求,由于Android系统默认内置了一些可以打开的系统应用,但还是不能满足需求,比如打开视频文件、word等,需要安装相应的播放软件才可以使用,这时程序会通过Intent查找可以使用的软件实现通过代码打开一个文件需要2部分,一部分是要获取到不同文件的后缀,以便根据需求匹配相应的Intent,另一个就是不同格式的文件打开的Intent不同

1、在values目录下定义后缀数组文件fileendings

 
 
 
.png 
.gif 
.jpg 
.jpeg 
.bmp 
 
 
.mp3 
.wav 
.ogg 
.midi 
 
 
.mp4 
.rmvb 
.avi 
.flv 
 
 
.jar 
.zip 
.rar 
.gz 
.apk 
.img 
 
 
.htm 
.html 
.php 
.jsp 
 
 
.txt 
.java 
.c 
.cpp 
.py 
.xml 
.json 
.log 
 
 
.doc 
.docx 
 
 
.xls 
.xlsx 
 
 
.ppt 
.pptx 
 
 
.p 
 
 
.png 
.gif 
.jpg 
.jpeg 
.bmp 
 
 
.mp3 
.wav 
.ogg 
.midi 
 
 
.mp4 
.rmvb 
.avi 
.flv 
 
 
.jar 
.zip 
.rar 
.gz 
.apk 
.img 
 
 
.htm 
.html 
.php 
.jsp 
 
 
.txt 
.java 
.c 
.cpp 
.py 
.xml 
.json 
.log 
 
 
.doc 
.docx 
 
 
.xls 
.xlsx 
 
 
.ppt 
.pptx 
 
 
.pdf 
 
df 
 

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程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/164134.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号