android使用其他应用打开文件

根据文件的MIME类型来判断,手机中有哪些应用可以打开这个文件,然后把应用在弹窗列表中显示

/**
     * 打开文件
     *
     * @param file
     */
    public static void openFile(Context context,File file) {
        //Uri uri = Uri.parse("file://"+file.getAbsolutePath());
        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);
    }

public static void openFileByWps(Context context,File file){
    Intent intent = new Intent();

    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setAction(android.content.Intent.ACTION_VIEW);
    intent.setClassName("cn.wps.moffice", "cn.wps.moffice.documentmanager.PreStartActivity");
    Uri uri = Uri.fromFile(file);
    intent.setData(uri);
        context.startActivity(intent);
}

    //建立一个MIME类型与文件后缀名的匹配表
    private 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"},
            {"",        "*/*"}
    };
时间: 2024-11-03 12:37:03

android使用其他应用打开文件的相关文章

调用Android系统安装的软件打开文件,程序停止运行

问题描述 如题,调用Android系统安装的软件打开文件时,当系统有安装相关软件时程序正常运行,但是当系统找不到该文件类型匹配的软件时就停止运行了.现在我想让它找不到相应软件时能提示用户,而不是直接停止运行,代码应该怎么写,求大神赐教!!! 解决方案1 或者捕捉startActivity的异常,但是这种方式比较粗暴. 解决方案2 try {     //把你7楼的代码放在这里 } catch (Exception e) {     //提示用户没有找到 } 解决方案3 何必呢,直接使用 // 获

cocos2dx 在android平台打开文件问题

我们有一个项目是基于cocos2dx + lua,在网络部分用到了protobuf, 在初始化protobuf的时候须要读取本地文件,用lua的io.open读取文件在windows,ios上是没问题的.android下的app是apk文件.由于apk是压缩文件,所以io.open无能为力,由于整个app被压缩为一个文件. 在网上查到资料能够通过调用cocos2dx里的getFileData() 这个函数来读取文件内容,getFileData通过检測不同的平台.调用不同的接口的来打开和读取文件,

Android中调用系统所装的软件打开文件(转)

Android中调用系统所装的软件打开文件(转) 在应用中如何调用系统所装的软件打开一个文件,这是我们经常碰到的问题,下面是我所用到的一种方法,和大家一起分享一下! 这个是打开文件的一个方法: Java代码 /** * 打开文件 * @param file */ private void openFile(File file){ Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //设置in

[转]在eclipse打开的android虚拟手机,打开File Explorer,下面是空的没有data、mnt、system三个文件

在eclipse打开的android虚拟手机,打开File Explorer,下面是空的没有data.mnt.system三个文件 这是因为模拟器没有选择打开的缘故,必须首先打开一个模拟器(AVD),然后在左侧选择模拟器,右边才会出现相应的mnt等文件夹! 当我们启动起来模拟器后, 然后进入DDMS,在file Explorer中看到下面

Android开发 打开文件 选择文件对话框

原文地址:http://blog.csdn.net/trbbadboy/article/details/7899424; 因项目需要打开文件,因此做了一个打开文件的对话框,现在把这部分的代码共享出来了. 首先是一个回调接口,该接口在文件选择完毕的通知调用者进行如果何种操作.文件接口声明,如下: [java] view plaincopyprint? // filename: CallbackBundle.java package com.example.openfiledemo; import 

[Android] 针对生成的图片文件在系统Gallery不显示的处理

之前遇到过一个问题,就是发现我在程序中生成一个新的 Bitmap 之后,当我打开系统的 Gallery 查看时,并没有看到新生成的图像.然而打开文件浏览器,找到保存 Bitmap 所在的文件夹下,还能看到程序生成的 Bitmap 文件.也就是说,文件其实存在,但 Gallery 似乎并没有刷新.之后,又一个新的行为证实了我的观点,即,每次重启设备之后, Gallery 中就会显示新生成的 Bitmap 了.也就是说,重启设备之后,系统对某个保存有图片信息的文件进行了重新读写(当时得出的是这么个结

Android开发问题之R文件丢失

问题解析:1.有时候我们打开Android工程时,会发现gen文件夹下的R文件丢失了,这种情况的发生一般是发在在导入其他Android工程之后,原因是sdk版本问题:2.如果工程已经在eclipse软件中,可能是xml文件错误导致的. 解决方法:1.找到菜单栏中“项目”(project)选项下的“清理”(clean),然后在弹出的对话框中选择你要清理的工程:2.如果没有效果,可以选中项目名称,右击选择“源代码”->“清理”,确定完成.虽然两者都是清理操作,但感觉效果是不一样的:3.如果还是没有出

cocos2d-x调用android内嵌浏览器打开网页

cocos2d-x调用android内嵌浏览器打开网页,可以从入口传入网址,C++调用android 的api即可实现.方法也很简单 1. 修改"cocos2dx\platform\win32"下的CCApplication.h和CCApplication.cpp,添加函数 头文件声明 void openURL(const char* pszUrl); cpp文件实现: void CCApplication::openURL(const char* pszUrl) { ShellExe

Android漫游记(4)---.so文件动态调试一例

Android平台的动态调试一直以来是个困扰我等Coder的头疼问题,特别是对于本地的动态调试支持,可以说是"弱智"级别的,不知道Google的新版NDK和新出的Android Studio对这块支持如何,让我们拭目以待. 言归正传,我这里采用的是cygwin+ndk-gdb的调试模式,灵感来自于XDA的一篇博文(点击打开链接),平台和原文作者不同: 1.Win7 64 2.NDK r9d x86_64 3.Android 4.2.2 4.cygwin 64 5.IDA pro 6.1