`
zzmccnu
  • 浏览: 76061 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Android执行打开文件的总结

阅读更多

1. Android里面,要打开各种类型的文件,例如PDF,PPT,WORD,EXCEL,CHM,HTML,TEXT,AUDIO,VIDEO ,可以通过Intent来办到。

整理了一个Intent的工具类:

import java.io.File;

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

//PDF,PPT,WORD,EXCEL,CHM,HTML,TEXT,AUDIO,VIDEO   
//示例:   
//Intent it = getTextFileIntent("/sdcard/hello.txt",false);  
//startActivity(it);  

public class OpenFileIntent {

	// android获取一个用于打开HTML文件的intent
	public static Intent getHtmlFileIntent(String param) {
		Uri uri = Uri.parse(param).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(param).build();
		Intent intent = new Intent("android.intent.action.VIEW");
		intent.setDataAndType(uri, "text/html");
		return intent;
	}

	// android获取一个用于打开图片文件的intent
	public static Intent getImageFileIntent(String param) {
		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(new File(param));
		intent.setDataAndType(uri, "image/*");
		return intent;
	}

	// android获取一个用于打开PDF文件的intent
	public static Intent getPdfFileIntent(String param) {
		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(new File(param));
		intent.setDataAndType(uri, "application/pdf");
		return intent;
	}

	// android获取一个用于打开文本文件的intent
	public static Intent getTextFileIntent(String param, boolean paramBoolean) {
		Intent intent = new Intent("android.intent.action.VIEW");
		intent.addCategory("android.intent.category.DEFAULT");
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		if (paramBoolean) {
			Uri uri1 = Uri.parse(param);
			intent.setDataAndType(uri1, "text/plain");
		} else {
			Uri uri2 = Uri.fromFile(new File(param));
			intent.setDataAndType(uri2, "text/plain");
		}
		return intent;
	}

	// android获取一个用于打开音频文件的intent
	public static Intent getAudioFileIntent(String param) {
		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(new File(param));
		intent.setDataAndType(uri, "audio/*");
		return intent;
	}

	// android获取一个用于打开视频文件的intent
	public static Intent getVideoFileIntent(String param) {
		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(new File(param));
		intent.setDataAndType(uri, "video/*");
		return intent;
	}

	// android获取一个用于打开CHM文件的intent
	public static Intent getChmFileIntent(String param) {
		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(new File(param));
		intent.setDataAndType(uri, "application/x-chm");
		return intent;
	}

	// android获取一个用于打开Word文件的intent
	public static Intent getWordFileIntent(String param) {
		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(new File(param));
		intent.setDataAndType(uri, "application/msword");
		return intent;
	}

	// android获取一个用于打开Excel文件的intent
	public static Intent getExcelFileIntent(String param) {
		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(new File(param));
		intent.setDataAndType(uri, "application/vnd.ms-excel");
		return intent;
	}

	// android获取一个用于打开PPT文件的intent
	public static Intent getPptFileIntent(String param) {
		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(new File(param));
		intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
		return intent;
	}

}

 

2. 如果没有使用UncaughtExceptionHandler类来处理全局异常,那么程序将异常退出造成不好的用户体验。为了防止ActivityNotFoundException错误的出现,在启动Activity之前先判断Intent是否存在。

public static boolean isIntentAvailable(Context context, Intent intent) {
    final PackageManager packageManager = context.getPackageManager();
    List<ResolveInfo> list = packageManager.queryIntentActivities(intent,
            PackageManager.GET_ACTIVITIES);
    return list.size() > 0;
}
 
分享到:
评论

相关推荐

    android下载word文档并打开

    在Android平台上,开发一个应用程序以实现下载Word文档并顺利打开是一项常见的需求。下面将详细讲解这一过程中的关键知识点,以及如何结合给定的资源进行操作。 1. **Android权限管理**: 在Android中,访问网络和...

    android用于打开各种文件的intent

    标题与描述中的关键词“android用于打开各种文件的intent”揭示了本文将探讨的主题:在Android平台上,如何使用Intent机制来启动应用程序以打开不同类型的文件。Intent是Android四大组件之一,它提供了一种方式来...

    android开发总结文档

    ### Android开发总结文档知识点 #### 一、Git基础使用技巧 在进行Android开发时,版本控制工具Git的应用显得尤为重要。Git不仅可以帮助团队有效地管理代码版本,还能提高代码修改的透明度,减少因多人协作带来的...

    Android-用于android中打开pdf文件

    总结,`Android-用于android中打开pdf文件`项目是利用MuPDF-1.6版本,通过NDK和JNI在Android应用中实现PDF查看功能。开发者需要理解这些关键知识点,才能有效地集成和使用这个库,为用户提供一个高效、稳定的PDF阅读...

    Android打开本地HTML网页AndroidStudio工程.rar

    这个"Android打开本地HTML网页AndroidStudio工程.rar"文件很可能包含了一个简单的示例项目,演示如何在Android应用中加载并显示本地HTML文件。这里我们将深入探讨实现这一功能所涉及的关键知识点。 1. **WebView...

    android实战 打开浏览器(android studio源程序工程)

    在Android开发中,"打开浏览器"是一个常见的功能需求,它涉及到Android系统中Intent的使用以及浏览器组件的调用。这个实战项目"android实战 打开浏览器"是为Android初学者设计的,通过Android Studio进行实践操作,...

    android打开一个文件对话框

    在Android开发中,创建一个用于打开文件的对话框是常见的需求,这通常涉及到用户选择本地存储中的文件,然后应用可以读取或操作这些文件。在这个场景下,`android dialog` 是关键,它允许我们向用户提供交互式的界面...

    Android 基于x5Webview 浏览文件 office文档

    在"Android 基于x5Webview 浏览文件 office文档"的场景中,我们将探讨如何利用X5WebView来实现这一功能,并且这个方案已经经过了在Android 11上的测试验证。 首先,要使用X5WebView,你需要在项目中集成TBS(腾讯...

    在Android中调用二进制可执行程序

    Android基于Linux内核构建,因此支持许多与Linux相似的功能,比如可以运行二进制可执行文件。但是,由于Android自身的特性(如应用程序的安全沙箱、资源管理机制等),直接在Android上运行二进制文件与在普通Linux...

    Android文件上传,文件选择器,多选

    在Android应用开发中,文件上传和文件选择器是常见的功能需求。用户可能需要从设备存储中选择一个或多个文件,例如图片、文档或音频文件,然后上传到服务器或进行其他操作。本文将深入探讨如何在Android平台上实现...

    Android 实现读写U盘文件

    在Android平台上,与U盘进行文件的读写操作并不像在桌面系统中那样直接,因为Android设备通常不直接支持USB主机模式(Host Mode)。然而,借助第三方库如libaums,我们可以实现这一功能。libaums是Android上一个用于...

    android使用POI操作word docx文档

    在Android平台上,使用Apache POI库来操作Microsoft Office的Word(docx)文档是一项常见的需求。Apache POI是一个开源项目,主要设计用于处理Microsoft的文件格式,如.docx、.xlsx和.pptx等。本篇文章将深入探讨...

    android打开系统APK

    在Android系统中,打开系统内置的APK程序是一项常见的任务,尤其对于开发者来说,了解如何实现这一功能至关重要。本文将详细讲解如何通过编程方式来实现这一目标,让你的Android应用能够无缝地启动其他已安装的系统...

    查看android的数据库文件db工具

    它支持创建、打开、修改、删除数据库,以及查看表结构、执行SQL查询等功能,非常适合Android开发者用于调试和分析应用中的数据库。 首先,你需要下载并安装SQLiteBrowser。根据提供的压缩包文件名称"sqlitebrowser_...

    文件管理中打开文件,关联并自己的APP启动

    当我们谈论“文件管理中打开文件,关联并自己的APP启动”这个主题时,我们实际上是在讨论一种功能,即如何让一个应用程序能够处理特定类型的文件,并且在用户尝试打开这类文件时,使该应用出现在系统的打开方式列表中...

    Android打开H5网页完整AndroidStudio工程

    本项目"Android打开H5网页完整AndroidStudio工程"旨在帮助开发者快速理解和实现这一功能。下面将详细介绍这个项目中的关键知识点。 1. **WebView组件**: Android中的WebView是Android SDK提供的一个核心组件,它...

    AndroidStudio使用文档

    2. Gradle集成:Android Studio使用Gradle构建系统,通过修改build.gradle文件配置编译选项和依赖。 五、运行与调试 1. 设备选择:可以选择连接的物理设备或启动AVD(Android Virtual Device)进行模拟测试。 2. ...

    android读取Excel文件(Android studio开发环境)

    2. **读取Excel文件**:在Android应用中,我们通常会在一个后台线程(如AsyncTask)中执行文件读取,以避免阻塞UI。以下是一个简单的示例: ```java private class ReadExcelTask extends AsyncTask, Void, List...

    Android文件管理器源码

    Android文件管理器(增加了文件夹复制移动,下载资源暂停删除等,以及复制过程中的可视化进程)是一个基于Android开发的应用,包含常用文件操作以及文件下载功能,文件操作包括打开文件夹和打开各类的文件(apk、avi...

    Android文件读写操作总结.zip

    2. 使用FileInputStream构造器打开文件。 3. 使用read()方法逐字节读取,或read(byte[])一次性读取一定长度的数据。 4. 关闭输入流。 写入文件则类似,使用FileOutputStream,通过write()方法将数据写入。 二、...

Global site tag (gtag.js) - Google Analytics