当前位置: 代码迷 >> Android >> Android实施打开文件的总结
  详细解决方案

Android实施打开文件的总结

热度:76   发布时间:2016-05-01 13:32:59.0
Android执行打开文件的总结

1. Android里面,要打开各种类型的文件,例如PDF,PPT,WORD,EXCEL,CHM,HTML,TEXT,AUDIO,VIDEO ,可以通过Intent来办到。

整理了一个Intent的工具类:

import java.io.File;import android.content.Intent;import android.net.Uri;//PDF,PPT,WORD,EXCEL,CHM,HTML,TEXT,AUDIO,VIDEO   //示例:   //Intent it = getTextFileIntent("/sdcard/hello.txt",false);  //startActivity(it);  public class OpenFileIntent {	// android获取一个用于打开HTML文件的intent	public static Intent getHtmlFileIntent(String param) {		Uri uri = Uri.parse(param).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(param).build();		Intent intent = new Intent("android.intent.action.VIEW");		intent.setDataAndType(uri, "text/html");		return intent;	}	// android获取一个用于打开图片文件的intent	public static Intent getImageFileIntent(String param) {		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(new File(param));		intent.setDataAndType(uri, "image/*");		return intent;	}	// android获取一个用于打开PDF文件的intent	public static Intent getPdfFileIntent(String param) {		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(new File(param));		intent.setDataAndType(uri, "application/pdf");		return intent;	}	// android获取一个用于打开文本文件的intent	public static Intent getTextFileIntent(String param, boolean paramBoolean) {		Intent intent = new Intent("android.intent.action.VIEW");		intent.addCategory("android.intent.category.DEFAULT");		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);		if (paramBoolean) {			Uri uri1 = Uri.parse(param);			intent.setDataAndType(uri1, "text/plain");		} else {			Uri uri2 = Uri.fromFile(new File(param));			intent.setDataAndType(uri2, "text/plain");		}		return intent;	}	// android获取一个用于打开音频文件的intent	public static Intent getAudioFileIntent(String param) {		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(new File(param));		intent.setDataAndType(uri, "audio/*");		return intent;	}	// android获取一个用于打开视频文件的intent	public static Intent getVideoFileIntent(String param) {		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(new File(param));		intent.setDataAndType(uri, "video/*");		return intent;	}	// android获取一个用于打开CHM文件的intent	public static Intent getChmFileIntent(String param) {		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(new File(param));		intent.setDataAndType(uri, "application/x-chm");		return intent;	}	// android获取一个用于打开Word文件的intent	public static Intent getWordFileIntent(String param) {		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(new File(param));		intent.setDataAndType(uri, "application/msword");		return intent;	}	// android获取一个用于打开Excel文件的intent	public static Intent getExcelFileIntent(String param) {		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(new File(param));		intent.setDataAndType(uri, "application/vnd.ms-excel");		return intent;	}	// android获取一个用于打开PPT文件的intent	public static Intent getPptFileIntent(String param) {		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(new File(param));		intent.setDataAndType(uri, "application/vnd.ms-powerpoint");		return intent;	}}

?

2.?如果没有使用UncaughtExceptionHandler类来处理全局异常,那么程序将异常退出造成不好的用户体验。为了防止ActivityNotFoundException错误的出现,在启动Activity之前先判断Intent是否存在。

public static boolean isIntentAvailable(Context context, Intent intent) {    final PackageManager packageManager = context.getPackageManager();    List<ResolveInfo> list = packageManager.queryIntentActivities(intent,            PackageManager.GET_ACTIVITIES);    return list.size() > 0;}
?
  相关解决方案