利用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

ANSYS workbench (关于normal stiffness factor接触刚度因子)

关于normal stiffness factor接触刚度因子的含义和设置方法

weixin_43730845的博客 6807

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

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

weixin_33834628的博客 1167

论文理解【LLM-OR】—— 【PaMOP】Guiding Large Language Models in Modeling Optimization Problem

针对 LLM 求解运筹优化任务,PaMOP 通过约束划分树分离子问题,实现复杂优化问题的分块建模,并结合求解器反馈与反向翻译一致性检查迭代纠错,降低子任务复杂度,提升可执行率与建模准确性。

佚失的诗篇 1007

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

IIS服务器部署apk步骤

QY'UniverseSpace的博客 1516

FPGA以太网通信实战(一):实现MDIO接口驱动,掌控PHY芯片的钥匙

本文介绍了以太网通信技术及其核心组件。首先概述了以太网的发展历程,从标准以太网(10Mbps)到万兆以太网(10Gbps)的技术演进。重点分析了以太网接口的两大核心部件:MAC控制器负责数据链路层协议处理,PHY芯片负责物理信号转换和连接管理。文章详细解读了MDIO接口规范,包括帧格式和读写时序,并以YT8531 PHY芯片为例,介绍了其寄存器配置方法。最后设计了一个FPGA实现方案,通过MDIO接口完成PHY芯片的软复位和状态监测功能,并利用LED指示灯实时显示网络连接速率。

weixin_64402689的博客 1661

代谢组数据分析(零):从质谱样本制备到MaxQuant搜库(蛋白质组和代谢组)

本文详细介绍了代谢组数据分析的过程,从LC-MS/MS技术的样本制备、分离、质谱鉴定到MaxQuant软件的使用。LC-MS/MS包括样本制备、液相色谱分离、质谱上机和鉴定等步骤。MaxQuant在蛋白质定性和定量中扮演关键角色,通过搜库和数据处理提供精准结果。此外,文章还涉及了数据采集模式、质谱图谱解析、数据库和软件选择以及结果评估等方面

专注生信领域 8588

分享安卓任意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

基于Java+SpringBoot+微信小程序实现奶茶点单系统

再不用担心逢年过节的第一杯奶茶有没有人送了,制作一个奶茶点单系统自己当店主,开怀畅饮,一劳永逸。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

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

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

爱吃土豆 786

HFSS实战项目——高带外抑制特性SIW带通滤波器

本文对单级滤波器和双级滤波器的设计、工作原理及仿真结果进行了详细分析,并验证了双级SIW带通滤波器在性能方面的优越性,为微波通信系统中滤波器的设计和应用提供了重要参考。

2401_87464239的博客 1815

Python爬虫实战:高效爬取华尔街日报文章的技术与代码详解

在当今信息爆炸的时代,金融数据和分析对于投资者、研究人员和企业决策者来说至关重要。华尔街日报(WSJ)作为全球最具影响力的财经媒体之一,其文章内容具有极高的价值。本文将详细介绍如何使用Python最新技术构建一个高效、稳定的华尔街日报文章爬虫,涵盖从基础到高级的各种技术要点。本文详细介绍了如何使用Python最新技术构建一个高效、稳定的华尔街日报文章爬虫。我们从基础爬虫实现开始,逐步添加了高级功能如分布式处理、反反爬虫策略、数据清洗和存储等。异步处理:使用asyncio和httpx实现高性能网络请求。

2201_76125261的博客 385

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

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

JavaTiger 1103

不会精准对比前人研究写“讨论与对比”段落?教你用ChatGPT辅助,直接让这部分提升一个档次(附提示词指令)

一个我觉得很有效的做法是,选取几篇具有代表性的文献,从研究方法、变量设置或结论方面进行对照分析,并指出本研究在哪些方面进行了补充或修正。除了简单说“提出了新的方法”或“首次应用某模型”,更需要说明这一做法在结果解读、研究设计或理论拓展上的具体意义,最好能够与现有研究进行比较,形成明确的差异化描述。段落应包含:研究结果解释、与前人研究对比、研究贡献、局限性反思,并在结尾提出未来研究的可能方向。讨论与对比部分一般位于文献综述、研究讨论或结果分析的后面,目的是对比已有研究,突出自己研究的价值与新意。

智能AI让学术科研更容易 171

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

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

飞翔的小企鹅的博客 6234

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

调用系统Activity安卓APK

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

tacheng7的博客 326

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

xamjj的博客 801

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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、付费专栏及课程。

余额充值