最近在做一个项目用到了打开本地的doc、pdf文件,对此做一个记录!希望有所帮助!

首先是一个打开各种格式文件的工具类,代码如下

import android.content.Intent;import android.net.Uri;import java.io.File;/** * Created by FengJD on 2016/11/10. */public class OpenFiles {    //android获取一个用于打开HTML文件的intent    public static Intent getHtmlFileIntent(String Path)    {        File file = new File(Path);        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(String Path)    {        File file = new File(Path);        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(String Path)    {        File file = new File(Path);        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(String Path)    {        File file = new File(Path);        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(String Path)    {        File file = new File(Path);        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(String Path)    {        File file = new File(Path);        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(String Path)    {        File file = new File(Path);        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(String Path)    {        File file = new File(Path);        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(String Path)    {        File file = new File(Path);        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(String Path)    {        File file = new File(Path);        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(String Path)    {        File file = new File(Path);        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;    }}
      

这边是打开本地文件的界面,代码如下:

import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.Toast;import butterknife.Bind;import butterknife.ButterKnife;import butterknife.OnClick;/** * Created by FengJD on 2016/11/10. */public class MainActivity extends AppCompatActivity {    @Bind(R.id.pdf)    Button pdf;    @Bind(R.id.word)    Button word;    @Bind(R.id.apk)    Button apk;    @Bind(R.id.ppt)    Button ppt;    @Bind(R.id.text)    Button text;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);    }    @OnClick({R.id.pdf, R.id.word, R.id.apk, R.id.ppt, R.id.text})    public void onClick(View view) {        switch (view.getId()) {            case R.id.pdf:                try{                    //  sdcard/test1.pdf为本地pdf文件的路径                    Intent intent =  OpenFiles.getPdfFileIntent("sdcard/test1.pdf");                    startActivity(intent);                }catch (Exception e){                    //没有安装第三方的软件会提示                    Toast toast = Toast.makeText(MainActivity.this, "没有找到打开该文件的应用程序", Toast.LENGTH_SHORT);                    toast.show();                }                break;            case R.id.word:                try{                    //  sdcard/test2.docx为本地doc文件的路径                    Intent intent =  OpenFiles.getWordFileIntent("sdcard/test2.docx");                    startActivity(intent);                }catch (Exception e){                    //没有安装第三方的软件会提示                    Toast toast = Toast.makeText(MainActivity.this, "没有找到打开该文件的应用程序", Toast.LENGTH_SHORT);                    toast.show();                }                break;            case R.id.apk:                try{                    //  sdcard/test3.apk为本地apk文件的路径                    Intent intent =  OpenFiles.getApkFileIntent("sdcard/test3.apk");                    startActivity(intent);                }catch (Exception e){                    //没有安装第三方的软件会提示                    Toast toast = Toast.makeText(MainActivity.this, "没有找到打开该文件的应用程序", Toast.LENGTH_SHORT);                    toast.show();                }                break;            case R.id.ppt:                try {                    //   sdcard/test4.ppt为本地apk文件的路径                    Intent intent = OpenFiles.getPPTFileIntent("sdcard/test4.ppt");                    startActivity(intent);                }catch (Exception e){                    //没有安装第三方的软件会提示                    Toast toast = Toast.makeText(MainActivity.this, "没有找到打开该文件的应用程序", Toast.LENGTH_SHORT);                    toast.show();                }                break;            case R.id.text:                try {                    //sdcard/test5.text为本地apk文件的路径                    Intent intent = OpenFiles.getPPTFileIntent("sdcard/test5.text");                    startActivity(intent);                }catch (Exception e){                    //没有安装第三方的软件会提示                    Toast toast = Toast.makeText(MainActivity.this, "没有找到打开该文件的应用程序", Toast.LENGTH_SHORT);                    toast.show();                }                break;        }    }}

更多相关文章

  1. android音乐播放器怎么搜索SD卡上的音乐文件
  2. Android读取手机文件列表
  3. Android(安卓)M动态申请获取权限android.permission.READ_PHONE_
  4. android刷字体教程
  5. 【WEB服务器】i-jetty环境搭配与编译 .
  6. 在Android中修改快捷方式的图标
  7. Android获取设备已安装的应用
  8. Android-常用代码-36片段
  9. 在Android(安卓)Studio中修改maven私库的地址

随机推荐

  1. A012-anim资源
  2. Android(安卓)MediaPlayer播放异常问题汇
  3. Android(安卓)OpenCV 遇到的错误:Unresolv
  4. Android8.0 PackageManagerService相关 -
  5. Github学习之EasyTabs打造绚丽TabLayout+
  6. android调用本地录制程序获取录制文件路
  7. Android开发实践 BroadcastReceiver
  8. Code snippets about android locks scre
  9. ContentProvider实现数据共享1
  10. Android(安卓)VNC Server New