当前位置: 代码迷 >> Android >> android 更具File 起动不同的intent
  详细解决方案

android 更具File 起动不同的intent

热度:18   发布时间:2016-04-28 01:02:19.0
android 更具File 启动不同的intent
import java.io.File;import java.util.HashMap;import android.content.Intent;import android.net.Uri;public class FileIntentUtil {	private static final int INTENT_IMAGE = 1;	private static final int INTENT_AUDIO = 2;	private static final int INTENT_VIDEO = 3;	private static final int INTENT_PACHAGE = 4;	private static final int INTENT_WEBTEXT = 5;	private static final int INTENT_TEXT = 6;	private static final int INTENT_WORD = 7;	private static final int INTENT_EXCEL = 8;	private static final int INTENT_PPT = 9;	private static final int INTENT_PDF = 10;	private static final int INTENT_CHM = 11;	private static final int INTENT_MAX = 12;	private static FileIntentUtil _instance;	private static Object lockObj = new Object();	private final HashMap<String, Integer> map;	public Intent getFileIntent(String filepath) {		return getFileIntent(new File(filepath));	}	public Intent getFileIntent(File file) {		String filename = file.getName();		String[] ss = filename.split("\\.");		int type = -1;		if (ss.length > 1) {			String ext = ss[ss.length - 1];			if (ext != null && map.containsKey(ext)) {				type = map.get(ext);			}		}		if (type > 0 && type < INTENT_MAX) {			Intent intent = new Intent();			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);			intent.setAction(Intent.ACTION_VIEW);			Uri uri = Uri.fromFile(file);			switch (type) {			case INTENT_AUDIO:				intent.putExtra("oneshot", 0);				intent.putExtra("configchange", 0);				intent.setDataAndType(uri, "audio/*");				break;			case INTENT_CHM:				intent.setDataAndType(uri, "application/x-chm");				break;			case INTENT_EXCEL:				intent.setDataAndType(uri, "application/vnd.ms-excel");				break;			case INTENT_IMAGE:				intent.setDataAndType(uri, "image/*");				break;			case INTENT_PDF:				intent.setDataAndType(uri, "application/pdf");				break;			case INTENT_PACHAGE:				intent.setDataAndType(Uri.fromFile(file),						"application/vnd.android.package-archive");				break;			case INTENT_PPT:				intent.setDataAndType(uri, "application/vnd.ms-powerpoint");				break;			case INTENT_TEXT:				intent.setDataAndType(uri, "text/plain");				break;			case INTENT_VIDEO:				intent.putExtra("oneshot", 0);				intent.putExtra("configchange", 0);				intent.setDataAndType(uri, "video/*");				break;			case INTENT_WEBTEXT:				uri = Uri.fromFile(file).buildUpon()						.encodedAuthority("com.android.htmlfileprovider")						.scheme("content").encodedPath(file.toString()).build();				intent.setDataAndType(uri, "text/html");				break;			case INTENT_WORD:				intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);				intent.setDataAndType(uri, "application/msword");				break;			}			return intent;		}		return null;	}	private FileIntentUtil() {		map = new HashMap<String, Integer>();		// images		map.put("png", INTENT_IMAGE);		map.put("gif", INTENT_IMAGE);		map.put("jpg", INTENT_IMAGE);		map.put("jpeg", INTENT_IMAGE);		map.put("bmp", INTENT_IMAGE);		// audio		map.put("mp3", INTENT_AUDIO);		map.put("wav", INTENT_AUDIO);		map.put("ogg", INTENT_AUDIO);		map.put("midi", INTENT_AUDIO);		// video		map.put("mp4", INTENT_VIDEO);		map.put("rmvb", INTENT_VIDEO);		map.put("avi", INTENT_VIDEO);		map.put("flv", INTENT_VIDEO);		// package		map.put("jar", INTENT_PACHAGE);		map.put("zip", INTENT_PACHAGE);		map.put("rar", INTENT_PACHAGE);		map.put("gz", INTENT_PACHAGE);		map.put("apk", INTENT_PACHAGE);		map.put("img", INTENT_PACHAGE);		// web text		map.put("htm", INTENT_WEBTEXT);		map.put("html", INTENT_WEBTEXT);		map.put("php", INTENT_WEBTEXT);		map.put("jsp", INTENT_WEBTEXT);		// text		map.put("txt", INTENT_TEXT);		map.put("java", INTENT_TEXT);		map.put("c", INTENT_TEXT);		map.put("cpp", INTENT_TEXT);		map.put("py", INTENT_TEXT);		map.put("xml", INTENT_TEXT);		map.put("json", INTENT_TEXT);		map.put("log", INTENT_TEXT);		// word		map.put("doc", INTENT_WORD);		map.put("docx", INTENT_WORD);		// excel		map.put("xls", INTENT_EXCEL);		map.put("xlsx", INTENT_EXCEL);		// ppt		map.put("ppt", INTENT_PPT);		map.put("pptx", INTENT_PPT);		// pdf		map.put("pdf", INTENT_PDF);		// chm		map.put("chm", INTENT_CHM);	}	public static FileIntentUtil instance() {		if (_instance == null) {			synchronized (lockObj) {				if (_instance == null) {					_instance = new FileIntentUtil();				}			}		}		return _instance;	}}

  相关解决方案