利用MIME类型根据apk路径自动安装apk之application/vnd.android.package-archive
来源:互联网 发布:linux 设置系统时区 编辑:程序博客网 时间:2024/04/29 11:00
根据apk路径自动安装apk
String fileName = Environment.getExternalStorageDirectory() + realshow.apk; Uri uri = Uri.fromFile(new File(fileName)); //设置intent的Action属性 Intent intent = new Intent(Intent.ACTION_VIEW); //设置intent的data和Type属性。 //自动安装apk intent.setDataAndType(Uri, application/vnd.Android.package-archive"); startActivity(intent);
这里intent.setDataAndType(Uri, application/vnd.Android.package-archive”);中application/vnd.Android.package-archive的作用是什么?从setDataAndType方法的参数类型来看,它应该是一个type,下面具体看一下。
根据文件后缀名获得对应的MIME类型
/** * 根据文件后缀名获得对应的MIME类型。 * @param file */ private String getMIMEType(File file) { String type="*/*"; String fName = file.getName(); //获取后缀名前的分隔符"."在fName中的位置。 int dotIndex = fName.lastIndexOf("."); if(dotIndex < 0){ return type; } /* 获取文件的后缀名*/ String end=fName.substring(dotIndex,fName.length()).toLowerCase(); if(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; }
这边出现了一个MIME_MapTable,从代码看来它似乎表明了与文件类型之间的某种关系,我们接着研究。
MIME_MapTable
什么是MIME
根据百度百科的解释:MIME:全称Multipurpose Internet Mail Extensions,多功能Internet 邮件扩充服务。它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
MIME_MapTable其实是所有文件的后缀名所对应的MIME类型的一个String数组:
private 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"}, {".docx", "application/vnd.openxmlformatsofficedocument.wordprocessingml.document"}, {".xls", "application/vnd.ms-excel"}, {".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, {".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"}, {".pptx", "application/vnd.openxmlformatsofficedocument.presentationml.presentation"}, {".prop", "text/plain"}, {".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/plain"}, {".z", "application/x-compress"}, {".zip", "application/x-zip-compressed"}, {"", "*/*"} };
从列表中可以看出,application/vnd.android.package-archive其实表示的是”.apk”,所以
intent.setDataAndType(Uri, application/vnd.Android.package-archive"); startActivity(intent);
其实是通过合适的方式打开了一个”.apk”类型的文件——自动安装了这个apk。
阅读全文
2 0
- 利用MIME类型根据apk路径自动安装apk之application/vnd.android.package-archive
- apk安装法之三--"application/vnd.android.package-archive"是什么?
- apk安装法之三--"application/vnd.android.package-archive"是什么?
- apk安装法之三--"application/vnd.android.package-archive"是什么?
- application/vnd.android.package-archive到底是什么
- "application/vnd.android.package-archive"是什么?
- android 根据package name检查apk是否已经安装
- android启动应用得 Uri.parse(path + projct + ".apk"), "application/and.and.package-archive"
- apk的MIME类型
- Android APK自动安装
- Android应用市场之APK自动安装
- Android辅助功能之自动安装apk
- 根据apk的路径判断是否安装
- IIS允许下载APK安装包(MIME类型配置)
- android APK文件有自己的MIME类型了
- Android APK 文件自动安装
- android根据apk文件得到package名和activity名
- Android根据系统意图安装apk
- JQuery中eq()和get()的区别
- 2017年7月18日Spring随笔
- 盒子模型
- 刷题1
- Cocos2d-x《雷电大战》(2)-精灵随手指移动,你点哪我走哪!
- 利用MIME类型根据apk路径自动安装apk之application/vnd.android.package-archive
- 百练_2693:最远距离
- C3P0配合DBUtils开源框架实现对数据库的增删改查及批处理功能实战
- getopt_long_only解析带多个参数值和对optind的个人理解
- ZOJ 3471Most Powerful(状态压缩DP)
- UNP第二章 TCP、UDP和SCTP
- Object Hook 简单介绍
- golang环境下的日志记录器-系列之二
- java 队列