android中打开本地doc、pdf、ppt、text等文件功能的实现
16lz
2021-01-26
最近在做一个项目用到了打开本地的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; } }}
更多相关文章
- android音乐播放器怎么搜索SD卡上的音乐文件
- Android读取手机文件列表
- Android(安卓)M动态申请获取权限android.permission.READ_PHONE_
- android刷字体教程
- 【WEB服务器】i-jetty环境搭配与编译 .
- 在Android中修改快捷方式的图标
- Android获取设备已安装的应用
- Android-常用代码-36片段
- 在Android(安卓)Studio中修改maven私库的地址