利用MIME类型根据apk路径自动安装apk之application/vnd.android.package-archive

upload的文件对应的类型(比如.pdf 后缀文件对应type为‘application/pdf‘) upload的文件对应的类型(比如.pdf 后缀文件对应type为'application/pdf') 阅读详情

根据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。

Android PackageManagerService 总结(一)应用市场下载安装apk流程 前言: 本篇文章是对系统包安装流程的总结,基于Android12 上 com.android.packageinstaller 源码的分析,第三方应用商城(华为商城,小米商城,应用宝,豌豆荚,酷安等)下载安装应 用,在普通安装和静默安装app两种方式下,对代码流程的梳理和讲解。 触发安装: 当你在商城界面中点击安装按钮,应用会自动下载,下载完成后就会调起系统安装应用的界面,此种触发方式一般是通过Intent 隐式调用的,我们先阅读如下代码: ...... 阅读详情

相关推荐

Android 默认浏览器下载APK文件类型识别与安装失败的深度解析

本文深度解析了Android默认浏览器下载APK文件时,因文件名识别错误和MIME类型混乱导致安装失败的根源。通过剖析MimeTypeMap.java和URLUtil.java等核心源码,揭示了中文文件名被误判为.bin文件,以及服务器返回模糊MIME类型时系统无法正确调用安装器的关键问题,并提供了针对性的源码级修复方案与排查清单。

weixin_29212867的博客 615

apk安装流程

android系统启动之后调用PackageManagerService服务并解析系统特定目录,解析apk文件并安装的过程,这个安装过程实际上是没有图形界面的,底层调用的是我们平时比较熟悉的adb命令,那么我们平时安装apk文件的时候大部分是都过图形界面安装的,那么这种方式安装apk具体的流程是怎样的呢? 本文我们就来具体看一下apk的具体安装过程,通过本文的学习希望帮助大家大概的了解到Android系统安装Apk文件的基本流程。 相信大家都知道如果我们想在代码里执行apk的安装,那么一般都是这样: Int

weixin_42904469的博客 1万+

IIS服务器配置APK文件下载的MIME类型解决方案

MIME类型是Web服务器标识文件内容类型的标准机制,它决定了浏览器如何处理服务器返回的文件。在IIS服务器环境中,默认配置往往不包含Android应用包(.apk)的MIME类型映射,导致文件下载失败。通过正确配置application/vnd.android.package-archive这一标准MIME类型,可以解决企业应用分发、OTA更新等场景中的文件下载问题。本文详细介绍如何在IIS管理器中添加MIME类型映射,包括图形界面和web.config两种配置方式,并提供了文件下载优化、安全配置等实用技

weixin_29279153的博客 286

application/vnd.android.package-archive到底是什么

在拜读组里北大研二的安卓代码的时候, 读到登录前检测版本后更新的代码。发现了一个不懂的地方。 void update() { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(Environment .getExternalStorageDi

大三狗现在才努力还不算晚吧?! 1万+

Android 7.1 第三方App弹窗安装流程

Android 7.1 第三方App弹窗安装流程

qq_20395637的博客 1488

共聚焦显微镜的光源、工作原理与选型

共聚焦显微镜作为科研与工业领域中重要的微观成像工具,凭借光源的精准适配性、光学切片技术的三维成像能力,以及对不同工业场景的定制化适配潜力,为半导体检测、工业部件分析、智能制造升级提供了关键技术支撑。深入理解其光源特性、工作原理与选型逻辑,能帮助工程师与技术人员精准匹配设备与生产需求,既保障微观检测的精度与效率,又为产业优化、技术创新筑牢微观观测的基础。

PhotonixBay的博客 1537

IIS服务器配置APK文件下载的完整解决方案

MIME类型是Web服务器标识文件格式的重要机制,它通过Content-Type头告知浏览器如何处理响应内容。在IIS服务器中,默认配置往往不包含Android应用包(APK)的MIME类型,导致下载异常。通过配置application/vnd.android.package-archive类型,结合权限管理和传输优化,可构建高效的企业内部分发系统。这种方案特别适用于移动办公、应用测试等场景,能有效解决APK文件下载乱码或失败问题。实际部署时还需考虑安全策略、负载均衡等企业级需求,确保系统稳定可靠。

weixin_33834628的博客 1167

Codesys电子凸轮从入门到应用:手把手教你用MC_CamIn/MC_CamOut实现主从轴同步

本文详细介绍了如何在Codesys平台上使用MC_CamIn和MC_CamOut功能块实现电子凸轮的主从轴同步控制。从环境配置、轴使能到凸轮表创建与动态切换,提供了完整的程序编写指南和调试技巧,帮助工程师快速掌握工业自动化中的高精度运动控制技术。

weixin_26878995的博客 277

网站服务器部署apk软件,供外网下载

IIS服务器部署apk步骤

QY'UniverseSpace的博客 1516

【任何电机可使用的七段式s曲线-----包括matlab代码和simulink仿真】

S形加加速(T1)→>匀加速(T2)→减加速(T3)→>匀速(T4 )>加减速(T5)>匀减速(T6)-→>减减速(T7)

weixin_44312889的博客 6309

Linux 下 OpenClaw 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Linux 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 步骤一 安装Node.js 2.2 步骤二:安装git 2.3 步骤三:安装并配置OpenClaw 2.4 步骤四:配置OpenClaw 2.5 步骤五:配置模型 2.6 步骤六:对话 3. 后续使用步骤 4. 报错解决方案 5. OpenClaw的卸载

weixin_43178406的博客 10万+

分享安卓任意apk文件代码

直接上代码。 Intent shareApkIntent = new Intent(); shareApkIntent.setAction(Intent.ACTION_SEND); shareApkIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("/system/app/LiveWallpapers.apk"))); sh

奔跑的快乐的专栏 1205

FANUC机器人_KAREL编程入门学习(1)

FANUC机器人_KAREL编程入门学习(1)

Robot_PLC_HMI_Automation 6420

通过浏览器下载放在win7 IIS网站下的apk

问题描述:将一个a.apk文件放在了IIS下一个已经发布好的网站的子目录下(/apk/a.apk),想通过浏览器下载,网站给出错误(HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射)解决方法 计算机右键-》管理-》服务和应用程序-》Internet信息服务(IIS)管理器 找到你发布的

爱吃土豆 786

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2343

Java的API帮助文档

JDK帮助文档 SUN公司为JDK工具包提供了一整套文档资料,我们习惯上称之为JDK文档。 JDK文档中提供了Java中的各种技术的详细资料,以及JDK中提供的各种类的帮助说明。 JDk文档是Java语言的完整说明,大多数书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料 如何理解API:就当做是一个“字典”,“使用手册”,API就相当于是一个电子的帮助文档,可以帮我们查看JDK提供的类的信息,平时查看的时候可结合百度一起看。 官网下载: 1、登录Oracle官网(Oracl.

人生得意须尽欢 2万+

用代码通过Intent实现apk文件的安装

<br />    在系统安装的的底层常规应用中,是通过PackageInstaller来识别程序安装的intent来执行安装: <br />package cn.com; import android.app.Activity; import android.content.I

JavaTiger 1103

从 Service Entry Sheet 按 PO 行项目追溯服务行:PACKNO 与 ESLL 层级解包实战

摘要: SAP MM模块中,外部服务采购的数据结构较为复杂,服务明细并非直接存储在采购订单行项目表EKPO中,而是通过PACKNO关联到服务包表ESLL。本文解析了从采购订单行项目EBELN+EBELP获取服务行号SRVPOS的方法,重点分析了服务包的层级结构(根包、子包SUB_PACKNO),并提供了兼容合同项目的ABAP代码实现。通过EKPO-PACKNO定位根包后,需结合ESUC和ESLL表逐层解析子包,最终获取服务明细数据,解决了服务采购场景下的数据关联难题。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 174

关于网站发布后通过网站域名+文件路径访问下载文件问题

相信不少朋友遇到过网站发布后,在网站根目录下创建文件夹,想通过在地址栏直接输入地址下载文件,但是却反馈404错误信息的问题。有时候可能是因为如下情况导致的: 1、文件不存在。解决办法:将文件纳入文件目录访问。 2、网站MIME配置中无配置清单。 解决方案:1、在管理工具里打开Internet 信息服务(IIS)管理器。然后选择需要配置的网站。 2、右侧的界面中会显示该网站的所有功能

飞翔的小企鹅的博客 6234

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

调用系统Activity安卓APK

/** * 安装APK * @param t */ private void installAPK(File t) { Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); inte

tacheng7的博客 326

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

解决MVC4发布在IIS7后,路径无法访问.apk文件的解决方法

随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件,那么怎么才能让IIS支持.apk文件的下载呢? IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载。 IIS服务器不能下载.apk文件的解决办法:既然...

xamjj的博客 801

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android应用实现安装外部apk

Intent i = new Intent(Intent.ACTION_VIEW); String filePath = "sdcard/a.apk"; i.setDataAndType(Uri.parse("file://" + filepath), "application/vnd.android.package-archive"); startActivity(i);

EasonX专栏 1872

IIS不支持apk文件下载问题

默认情况,通过http或https无法直接下载apk的链接文件,提示无法找到此文件或路径错误,这是因为在IIS的默认MIME类型中没有.apk文件,不支持APK文件下载。 解决办法:在IIS的MIME类型中添加apk类型即可。 IIS服务器不能下载.apk文件的解决步骤: 打开IIS服务管理器,找到MIME类型; 双击打开,在空白处右键选择“添加”...

weixin_34344677的博客 378

android:程序中安装APK方法

File f = new File("sdcard/fallingball.apk"); Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); ...

编程资料大全 123

iis服务器创建虚拟下载路径,下载apk404

在服务器的IIS管理器中找到 mime类型 双击打开 查看类型是否存在.apk类型。不存在的话点右上角添加 文件扩展名填 “.apk” mime类型填 application/vnd.android.package-archive 不要填application/x-compressed 这个是zip的。虽然也能下载,但是下载下来的后缀直接变成.zip ...

不加香精的专栏 558
上一篇: Java math.ceil 函数用法
下一篇: 判断当前应用是否启动/是否在前台
Boiling_Cola
博客等级 码龄11年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值