求一个android打开各种类型文件的demo

哎,真难 2016-04-18 04:45:12
加精
用webview试了下,doc无法解析,太麻烦,用了intent去调用第三方软件,但是doc不知道用什么调用,什么都没弹出,求一个大神写好的demo。。。
...全文
2436 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
伊顺鸣 2016-04-25
  • 打赏
  • 举报
回复
楼主,支持一下!!!
monxin_mall 2016-04-22
  • 打赏
  • 举报
回复
真的一滴血 2016-04-19
  • 打赏
  • 举报
回复
引用 11 楼 heaimnmn 的回复:
引用 2 楼 u012842963 的回复:
版主都不会,我怎么会
我不会,你会不就证明你比我厉害咯
然而我并不会
nettman 2016-04-19
  • 打赏
  • 举报
回复
进来学习下
哎,真难 2016-04-19
  • 打赏
  • 举报
回复
引用 2 楼 u012842963 的回复:
版主都不会,我怎么会
我不会,你会不就证明你比我厉害咯
哎,真难 2016-04-19
  • 打赏
  • 举报
回复
引用 7 楼 assky124 的回复:
用WPS吧 http://bbs.wps.cn/thread-22349340-1-1.html
这个好,就是要引导客户下载wps
哎,真难 2016-04-19
  • 打赏
  • 举报
回复
引用 8 楼 u010588886 的回复:
public class CallOtherOpenFile {
	/*
	 * @project C6Client
	 * 
	 * @package com.jh.c6.util
	 * 
	 * @file CallOtherOpeanFile.java
	 * 
	 * @version 1.0
	 * 
	 * @author liaoyp
	 * 
	 * @time 2012-5-19 上午6:30:54
	 */

	/**
	 * 
	 * <code>openFile</code>
	 * 
	 * @description: TODO(打开附件)
	 * @param context
	 * @param file
	 * @since 2012-5-19 liaoyp
	 */
	public static void openFile(Context context, File file) {
		try {
			Intent intent = new Intent();
			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			// 设置intent的Action属性
			intent.setAction(Intent.ACTION_VIEW);
			// 获取文件file的MIME类型
			String type = getMIMEType(file);
			// 设置intent的data和Type属性。
			intent.setDataAndType(/* uri */Uri.fromFile(file), type);
			// 跳转
			context.startActivity(intent);
			// Intent.createChooser(intent, "请选择对应的软件打开该附件!");
		} catch (ActivityNotFoundException e) {
			Toast.makeText(context, "sorry附件不能打开,请下载相关软件!", Toast.LENGTH_SHORT).show();
		}
	}

	private static String getMIMEType(File file) {

		String type = "*/*";
		String fName = file.getName();
		// 获取后缀名前的分隔符"."在fName中的位置。
		int dotIndex = fName.lastIndexOf(".");
		if (dotIndex < 0) {
			return type;
		}
		/* 获取文件的后缀名 */
		String end = fName.substring(dotIndex, fName.length()).toLowerCase(Locale.getDefault());
		if (end == "")
			return type;
		// 在MIME和文件类型的匹配表中找到对应的MIME类型。
		for (int i = 0; i < MIME_MapTable.length; i++) {
			if (end.equals(MIME_MapTable[i][0]))
				type = MIME_MapTable[i][1];
		}
		return type;
	}
	
	/*
	 * 传文件路径打开文件
	 * 
	 */
	public static void openFile(Context context, String filePath){
		File file = new File(filePath);
		openFile(context, file);
	}

	// 可以自己随意添加
	private static String[][] MIME_MapTable = {
			// {后缀名,MIME类型}
			{ ".3gp", "video/3gpp" },
			{ ".apk", "application/vnd.android.package-archive" },
			{ ".asf", "video/x-ms-asf" },
			{ ".avi", "video/x-msvideo" },
			{ ".bin", "application/octet-stream" },
			{ ".bmp", "image/bmp" },
			{ ".c", "text/plain" },
			{ ".class", "application/octet-stream" },
			{ ".conf", "text/plain" },
			{ ".cpp", "text/plain" },
			{ ".doc", "application/msword" },
			{ ".docx",
					"application/vnd.openxmlformats-officedocument.wordprocessingml.document" },
			{ ".xls", "application/vnd.ms-excel" },
			{ ".xlsx",
					"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" },
			{ ".exe", "application/octet-stream" },
			{ ".gif", "image/gif" },
			{ ".gtar", "application/x-gtar" },
			{ ".gz", "application/x-gzip" },
			{ ".h", "text/plain" },
			{ ".htm", "text/html" },
			{ ".html", "text/html" },
			{ ".jar", "application/java-archive" },
			{ ".java", "text/plain" },
			{ ".jpeg", "image/jpeg" },
			{ ".jpg", "image/jpeg" },
			{ ".js", "application/x-javascript" },
			{ ".log", "text/plain" },
			{ ".m3u", "audio/x-mpegurl" },
			{ ".m4a", "audio/mp4a-latm" },
			{ ".m4b", "audio/mp4a-latm" },
			{ ".m4p", "audio/mp4a-latm" },
			{ ".m4u", "video/vnd.mpegurl" },
			{ ".m4v", "video/x-m4v" },
			{ ".mov", "video/quicktime" },
			{ ".mp2", "audio/x-mpeg" },
			{ ".mp3", "audio/x-mpeg" },
			{ ".mp4", "video/mp4" },
			{ ".mpc", "application/vnd.mpohun.certificate" },
			{ ".mpe", "video/mpeg" },
			{ ".mpeg", "video/mpeg" },
			{ ".mpg", "video/mpeg" },
			{ ".mpg4", "video/mp4" },
			{ ".mpga", "audio/mpeg" },
			{ ".msg", "application/vnd.ms-outlook" },
			{ ".ogg", "audio/ogg" },
			{ ".pdf", "application/pdf" },
			{ ".png", "image/png" },
			{ ".pps", "application/vnd.ms-powerpoint" },
			{ ".ppt", "application/vnd.ms-powerpoint" },
			{ ".pptx",
					"application/vnd.openxmlformats-officedocument.presentationml.presentation" },
			{ ".prop", "text/plain" }, { ".rc", "text/plain" },
			{ ".rmvb", "audio/x-pn-realaudio" }, { ".rtf", "application/rtf" },
			{ ".sh", "text/plain" }, { ".tar", "application/x-tar" },
			{ ".tgz", "application/x-compressed" }, { ".txt", "text/plain" },
			{ ".wav", "audio/x-wav" }, { ".wma", "audio/x-ms-wma" },
			{ ".wmv", "audio/x-ms-wmv" },
			{ ".wps", "application/vnd.ms-works" }, { ".xml", "text/plain" },
			{ ".z", "application/x-compress" },
			{ ".zip", "application/x-zip-compressed" }, 
			{ ".tif", "image/tiff" },
			{ ".tiff", "image/tiff" },
			{".amr", "video/*"},
//			{ "", "*/*" }
			};
}
这个就是没有第三方软件就不提示了
u010588886 2016-04-19
  • 打赏
  • 举报
回复
public class CallOtherOpenFile {
	/*
	 * @project C6Client
	 * 
	 * @package com.jh.c6.util
	 * 
	 * @file CallOtherOpeanFile.java
	 * 
	 * @version 1.0
	 * 
	 * @author liaoyp
	 * 
	 * @time 2012-5-19 上午6:30:54
	 */

	/**
	 * 
	 * <code>openFile</code>
	 * 
	 * @description: TODO(打开附件)
	 * @param context
	 * @param file
	 * @since 2012-5-19 liaoyp
	 */
	public static void openFile(Context context, File file) {
		try {
			Intent intent = new Intent();
			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			// 设置intent的Action属性
			intent.setAction(Intent.ACTION_VIEW);
			// 获取文件file的MIME类型
			String type = getMIMEType(file);
			// 设置intent的data和Type属性。
			intent.setDataAndType(/* uri */Uri.fromFile(file), type);
			// 跳转
			context.startActivity(intent);
			// Intent.createChooser(intent, "请选择对应的软件打开该附件!");
		} catch (ActivityNotFoundException e) {
			Toast.makeText(context, "sorry附件不能打开,请下载相关软件!", Toast.LENGTH_SHORT).show();
		}
	}

	private static String getMIMEType(File file) {

		String type = "*/*";
		String fName = file.getName();
		// 获取后缀名前的分隔符"."在fName中的位置。
		int dotIndex = fName.lastIndexOf(".");
		if (dotIndex < 0) {
			return type;
		}
		/* 获取文件的后缀名 */
		String end = fName.substring(dotIndex, fName.length()).toLowerCase(Locale.getDefault());
		if (end == "")
			return type;
		// 在MIME和文件类型的匹配表中找到对应的MIME类型。
		for (int i = 0; i < MIME_MapTable.length; i++) {
			if (end.equals(MIME_MapTable[i][0]))
				type = MIME_MapTable[i][1];
		}
		return type;
	}
	
	/*
	 * 传文件路径打开文件
	 * 
	 */
	public static void openFile(Context context, String filePath){
		File file = new File(filePath);
		openFile(context, file);
	}

	// 可以自己随意添加
	private static String[][] MIME_MapTable = {
			// {后缀名,MIME类型}
			{ ".3gp", "video/3gpp" },
			{ ".apk", "application/vnd.android.package-archive" },
			{ ".asf", "video/x-ms-asf" },
			{ ".avi", "video/x-msvideo" },
			{ ".bin", "application/octet-stream" },
			{ ".bmp", "image/bmp" },
			{ ".c", "text/plain" },
			{ ".class", "application/octet-stream" },
			{ ".conf", "text/plain" },
			{ ".cpp", "text/plain" },
			{ ".doc", "application/msword" },
			{ ".docx",
					"application/vnd.openxmlformats-officedocument.wordprocessingml.document" },
			{ ".xls", "application/vnd.ms-excel" },
			{ ".xlsx",
					"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" },
			{ ".exe", "application/octet-stream" },
			{ ".gif", "image/gif" },
			{ ".gtar", "application/x-gtar" },
			{ ".gz", "application/x-gzip" },
			{ ".h", "text/plain" },
			{ ".htm", "text/html" },
			{ ".html", "text/html" },
			{ ".jar", "application/java-archive" },
			{ ".java", "text/plain" },
			{ ".jpeg", "image/jpeg" },
			{ ".jpg", "image/jpeg" },
			{ ".js", "application/x-javascript" },
			{ ".log", "text/plain" },
			{ ".m3u", "audio/x-mpegurl" },
			{ ".m4a", "audio/mp4a-latm" },
			{ ".m4b", "audio/mp4a-latm" },
			{ ".m4p", "audio/mp4a-latm" },
			{ ".m4u", "video/vnd.mpegurl" },
			{ ".m4v", "video/x-m4v" },
			{ ".mov", "video/quicktime" },
			{ ".mp2", "audio/x-mpeg" },
			{ ".mp3", "audio/x-mpeg" },
			{ ".mp4", "video/mp4" },
			{ ".mpc", "application/vnd.mpohun.certificate" },
			{ ".mpe", "video/mpeg" },
			{ ".mpeg", "video/mpeg" },
			{ ".mpg", "video/mpeg" },
			{ ".mpg4", "video/mp4" },
			{ ".mpga", "audio/mpeg" },
			{ ".msg", "application/vnd.ms-outlook" },
			{ ".ogg", "audio/ogg" },
			{ ".pdf", "application/pdf" },
			{ ".png", "image/png" },
			{ ".pps", "application/vnd.ms-powerpoint" },
			{ ".ppt", "application/vnd.ms-powerpoint" },
			{ ".pptx",
					"application/vnd.openxmlformats-officedocument.presentationml.presentation" },
			{ ".prop", "text/plain" }, { ".rc", "text/plain" },
			{ ".rmvb", "audio/x-pn-realaudio" }, { ".rtf", "application/rtf" },
			{ ".sh", "text/plain" }, { ".tar", "application/x-tar" },
			{ ".tgz", "application/x-compressed" }, { ".txt", "text/plain" },
			{ ".wav", "audio/x-wav" }, { ".wma", "audio/x-ms-wma" },
			{ ".wmv", "audio/x-ms-wmv" },
			{ ".wps", "application/vnd.ms-works" }, { ".xml", "text/plain" },
			{ ".z", "application/x-compress" },
			{ ".zip", "application/x-zip-compressed" }, 
			{ ".tif", "image/tiff" },
			{ ".tiff", "image/tiff" },
			{".amr", "video/*"},
//			{ "", "*/*" }
			};
}
assky124 2016-04-19
  • 打赏
  • 举报
回复
用WPS吧 http://bbs.wps.cn/thread-22349340-1-1.html
cattpon 2016-04-19
  • 打赏
  • 举报
回复
这个版主没空看而已吧?
line_us 2016-04-19
  • 打赏
  • 举报
回复
好像是挺麻烦的事情。
assky124 2016-04-19
  • 打赏
  • 举报
回复
很多国产手机都预装了WPS了。 引导用户安装WPS也很简单啊。

    //String packageName = "cn.wps.moffice_eng";
    private static void downloadPackageFromMarket(String packageName,Activity activity, PackageManager pm){
        Uri marketUri = Uri.parse("market://details?id=" + packageName);
        Intent intent = new Intent(Intent.ACTION_VIEW).setData(marketUri);
        if(intent.resolveActivity(pm)!= null){
            activity.startActivity(intent);
        }
    }
a26626891 2016-04-19
  • 打赏
  • 举报
回复
好冷清啊
l150455125 2016-04-18
  • 打赏
  • 举报
回复
6666666666666
真的一滴血 2016-04-18
  • 打赏
  • 举报
回复
版主都不会,我怎么会
ZuoMiaoZuoXuan 2016-04-18
  • 打赏
  • 举报
回复
是什么东西?
哎,真难 2016-04-18
  • 打赏
  • 举报
回复
好冷清啊

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧