android打开不同类型文件

根据文件的类型进行选择android应用程序打开该文件,不多说,贴代码:

DocmentViewActivity.java

import java.io.File;
import java.util.List;
import com.landtool.hdjsjc.R;
import com.landtool.hdjsjc.common.constants.Constant;
import com.landtool.hdjsjc.document.SystemHelpGridAdapter.HelpDocViewHolder;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.GridView;
import android.widget.AdapterView.OnItemClickListener;

public class DocmentViewActivity extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_system_helper);
		intitUI();
	}

	private void intitUI(){
		Button btnBack = (Button) findViewById(R.id.btn_back_help);
		String docPath = Constant.DOCUMENTS_PATH;
		GridView docGridView = (GridView) findViewById(R.id.help_doc_gridview);
		List<File> files = HelperFileUtil.getHelpFiles(docPath);
		SystemHelpGridAdapter gridAdapter = new SystemHelpGridAdapter(this, files);
		docGridView.setAdapter(gridAdapter);
		docGridView.setOnItemClickListener(new OnItemClickListener(){

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				HelpDocViewHolder mHelpDocViewHolder = (HelpDocViewHolder) view.getTag();
				
				Intent intent = HelperFileUtil.openFile(mHelpDocViewHolder.file); 	//打开文件
				startActivity(intent);
				
			}
			
		});
		btnBack.setOnClickListener(new OnClickListener(){	//返回
			@Override
			public void onClick(View v) {
				finish();
			}
			
		});
		
		
	}


}


HelperFileUtil.java

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import android.content.Intent;
import android.net.Uri;

public class HelperFileUtil {

	/**
	 * MIME类型与文件后缀名的匹配表  
	 */
	public static final 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"},  
	    {".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"},  
	    {".prop",    "text/plain"},  
	    {".rar",    "application/x-rar-compressed"},  
	    {".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/xml"},  
	    {".xml",    "text/plain"},  
	    {".z",        "application/x-compress"},  
	    {".zip",    "application/zip"},  
	    {"",        "*/*"}      
	};  

	/** 
	 * 根据文件后缀名获得对应的MIME类型。 
	 * @param file 
	 */  
	public static String getMIMEType(File file)  
	{  
	    String type="*/*";  
	    String fName=file.getName();
	    int dotIndex = fName.lastIndexOf(".");  
	    if(dotIndex < 0){  
	        return type;  
	    }  
	    //文件的后缀名   
	    String end=fName.substring(dotIndex,fName.length()).toLowerCase(Locale.getDefault());  
	    if(null == end || "".equals(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;  
	}  
	/** 
	 * 打开文件 
	 * @param file 
	 */  
	public static Intent openFile(File file){  
	    Intent intent = new Intent();  
	    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);	    
	    intent.setAction(Intent.ACTION_VIEW);
	    
	    String type = getMIMEType(file); 
	    intent.setDataAndType(Uri.fromFile(file), type);
	    
	    return intent;
	}  
	
	/**
	 * 列出指定目录下的所有文件,不包括子目录
	 * @param parentPath
	 * 			指定根目录
	 * @return
	 * 		文件列表
	 */
	public static List<File> getHelpFiles(String parentPath){
		File file = new File(parentPath);
		if(!file.exists()){
			file.mkdir();
		}
		if (!file.isDirectory()) {
			return null;
		}
		File[] files = file.listFiles();
		if(null == files || files.length < 1){
			return null;
		}
		ArrayList<File> fileList = new ArrayList<File>();
		
		for (File f : files) {
			if(f.isDirectory()){
				continue;
			}
			fileList.add(f);
		}
		return fileList.size() > 0 ? fileList : null;
	}
	
}

SystemHelpGridAdapter.java

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import com.landtool.hdjsjc.R;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class SystemHelpGridAdapter extends BaseAdapter {

	private List<File> files;
	private Context mContext;
	private LayoutInflater mLayoutInflater;
	
	public SystemHelpGridAdapter(Context ctx, List<File> fls) {
		this.mContext = ctx;
		this.files = fls;
		mLayoutInflater = LayoutInflater.from(mContext);
		if(null == files){
			files = new ArrayList<File>();
		}
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return files.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return files.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		
		HelpDocViewHolder holder = null;
		
        if (convertView == null) {
        	
            holder = new HelpDocViewHolder();
            
            convertView = mLayoutInflater.inflate(R.layout.system_helper_gridview_item, null);       
            holder.name = (TextView) convertView.findViewById(R.id.help_file_name);    
            holder.fileIcon = (ImageView) convertView.findViewById(R.id.help_file_icon);
            
            convertView.setTag(holder); 
            
        } else {
            holder = (HelpDocViewHolder) convertView.getTag();    
        }
        
        holder.name.setText(files.get(position).getName());
        holder.fileIcon.setBackgroundResource(R.drawable.unknown_file_icon);
        holder.file = files.get(position);
        
        return convertView;
	}

	
	public final class HelpDocViewHolder {
		public TextView name;
		public ImageView fileIcon;
		public File file;
	}
}

activity_system_helper.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#f0f5f8"
        android:orientation="vertical" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="@dimen/common_title_bar_height"
            android:background="@drawable/pub_title_bg" >

            <Button
                android:id="@+id/btn_back_help"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/common_back_button"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                 />

            <TextView
                android:id="@+id/title_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:text="文档资料"
                android:textColor="@android:color/white"
                android:textSize="@dimen/common_title_font_size" />
        </RelativeLayout>

        <GridView            
            android:id="@+id/help_doc_gridview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="20dp"
            android:columnWidth="@dimen/image_thumbnail_size"
            android:horizontalSpacing="@dimen/image_thumbnail_spacing"
            android:numColumns="auto_fit"
            android:stretchMode="columnWidth"
            android:verticalSpacing="@dimen/image_thumbnail_spacing" >
        </GridView>
    </LinearLayout>

</LinearLayout>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Android打开Office文档,您可以按照以下步骤操作: 1. 在Google Play商店中搜索并下载Microsoft Office或WPS Office应用程序。 2. 安装应用程序后,打开它并授权所需的权限。 3. 在应用程序中,选择打开文件选项并导航到您要打开的Office文档的位置。 4. 选择要打开的文档并等待应用程序加载它。 5. 一旦文档加载完成,您可以查看、编辑和保存它。 请注意,某些高级功能可能需要付费版本才能使用。此外,某些特殊格式的Office文档可能需要特殊软件才能打开。 ### 回答2: 在Android设备上打开Office文件相对来说是比较容易的。Android系统自带了一些办公应用程序,如Word、Excel和PowerPoint,可以用来打开相应的Office文件。以下是简单的步骤: 1. 首先,在您的Android设备上找到并打开"Play商店"应用程序。 2. 在"Play商店"中,使用搜索功能查找并下载安装Microsoft Office应用程序。这个应用程序拥有更强大的功能,比如编辑和创建Office文件,与Microsoft Office桌面版本相似。 3. 安装完成后,回到设备的主屏幕并打开"Microsoft Office"应用程序。 4. 在Microsoft Office应用程序中,您可以选择打开Word、Excel或PowerPoint,具体取决于您想要打开的Office文件类型。 5. 在应用程序中,找到并点击"打开"按钮。 6. 接下来,您可以选择从设备存储中的文件夹中选择您要打开的Office文件,或者从云存储服务中选择文件。一些常见的云存储服务有Google Drive、Dropbox和OneDrive等。 7. 找到您想要打开文件,并点击它。文件将在Microsoft Office应用程序中打开。 8. 在应用程序中,您可以查看、编辑和保存文件。编辑完成后,您可以保存更改并在需要时导出或分享文件。 总而言之,通过在Android设备上安装并使用Microsoft Office应用程序,您可以轻松打开和编辑各种类型的Office文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值