一、OpenFiles类
package com.caojing.about;
import java.io.File;
import android.content.Intent;
import android.net.Uri;
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;
}
}
二、OpenFileHelper类
package com.caojing.about;
import java.io.File;
import com.caojing.mysharedemo.R;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
public class OpenFileHelper{
private Context context;
public OpenFileHelper(Context context) {
this.context = context;
}
public void openFile(File currentPath){
Log.d("OpenFileHelper",currentPath.toString());
if (currentPath != null && currentPath.isFile()) {
String fileName = currentPath.toString();
Intent intent;
try{
if (checkEndsWithInStringArray(fileName, context.getResources()
.getStringArray(R.array.fileEndingImage))) {
intent = OpenFiles.getImageFileIntent(currentPath);
context.startActivity(intent);
} else if (checkEndsWithInStringArray(fileName, context.getResources()
.getStringArray(R.array.fileEndingWebText))) {
intent = OpenFiles.getHtmlFileIntent(currentPath);
context.startActivity(intent);
} else if (checkEndsWithInStringArray(fileName, context.getResources()
.getStringArray(R.array.fileEndingPackage))) {
intent = OpenFiles.getApkFileIntent(currentPath);
context.startActivity(intent);
} else if (checkEndsWithInStringArray(fileName, context.getResources()
.getStringArray(R.array.fileEndingAudio))) {
intent = OpenFiles.getAudioFileIntent(currentPath);
context.startActivity(intent);
} else if (checkEndsWithInStringArray(fileName, context.getResources()
.getStringArray(R.array.fileEndingVideo))) {
intent = OpenFiles.getVideoFileIntent(currentPath);
context.startActivity(intent);
} else if (checkEndsWithInStringArray(fileName, context.getResources()
.getStringArray(R.array.fileEndingText))) {
intent = OpenFiles.getTextFileIntent(currentPath);
context.startActivity(intent);
} else if (checkEndsWithInStringArray(fileName, context.getResources()
.getStringArray(R.array.fileEndingPdf))) {
intent = OpenFiles.getPdfFileIntent(currentPath);
context.startActivity(intent);
} else if (checkEndsWithInStringArray(fileName, context.getResources()
.getStringArray(R.array.fileEndingWord))) {
intent = OpenFiles.getWordFileIntent(currentPath);
context.startActivity(intent);
} else if (checkEndsWithInStringArray(fileName, context.getResources()
.getStringArray(R.array.fileEndingExcel))) {
intent = OpenFiles.getExcelFileIntent(currentPath);
context.startActivity(intent);
} else if (checkEndsWithInStringArray(fileName, context.getResources()
.getStringArray(R.array.fileEndingPPT))) {
intent = OpenFiles.getPPTFileIntent(currentPath);
context.startActivity(intent);
} else {
showMessage("无法打开,请安装相应的软件!");
}
}catch(ActivityNotFoundException e){
showMessage("无法打开,请安装相应的软件!");
}
} else {
showMessage("对不起,这不是文件!");
}
}
private void showMessage(String msg){
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
}
//检查文件类型是否在fileEndings.xml列表中
private boolean checkEndsWithInStringArray(String checkItsEnd,
String[] fileEndings) {
for (String aEnd : fileEndings) {
if (checkItsEnd.endsWith(aEnd))
return true;
}
return false;
}
}
三、arrays.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="country_codes">
<item>-</item>
<item>AR</item>
<item>AU</item>
<item>BR</item>
<item>BG</item>
<item>CA</item>
<item>CN</item>
<item>CZ</item>
<item>DE</item>
<item>DK</item>
<item>ES</item>
<item>FI</item>
<item>FR</item>
<item>GB</item>
<item>GR</item>
<item>HU</item>
<item>ID</item>
<item>IT</item>
<item>JP</item>
<item>KR</item>
<item>NL</item>
<item>PL</item>
<item>PT</item>
<item>RU</item>
<item>SE</item>
<item>SK</item>
<item>SI</item>
<item>TR</item>
<item>TW</item>
<item>US</item>
</array>
<string-array name="array_checkbox">
<item>草约</item>
<item>确认</item>
<item>执行生效</item>
<item>发货完成</item>
<item>结算完成</item>
<item>合同完成</item>
</string-array>
<string-array name="array_checkbox_fzjdh">
<item>合同录入</item>
<item>合同审核</item>
<item>合同生效</item>
<item>合同生产</item>
<item>合同准发完成</item>
<item>合同发货完毕</item>
<item>合同结算完成</item>
<item>合同变更</item>
<item>合同完成</item>
</string-array>
<string-array name="bankroll_array_checkbox">
<item>草约</item>
<item>合同新增</item>
<item>合同已收款</item>
<item>合同生效</item>
<item>发货完成</item>
<item>结算完成</item>
</string-array>
<array name="fileEndingImage">
<item>.png</item>
<item>.gif</item>
<item>.jpg</item>
<item>.jpeg</item>
<item>.bmp</item>
<item>.tif</item>
<item>.tiff</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>
<array name="gbfwType">
<item>产品</item>
<item>物流</item>
<item>财务</item>
<item>系统</item>
<item>其他</item>
<item>异议</item>
</array>
<array name="gbfwStatus">
<item>待处理</item>
<item>处理中</item>
<item>完成</item>
</array>
<array name="region">
<item>总部</item>
<item>东北区域</item>
<item>华北区域</item>
<item>华东地区</item>
<item>华中区域</item>
<item>西部区域</item>
<item>南方区域</item>
<item>专营公司</item>
</array>
</resources>