最近项目中有个新需求,实现安卓APK的U盘升级。刚开始上网查找方法,踩了个大坑,方式是直接和USB设备建立连接,借助第三方库libaums识别U盘的文件系统,但是最新版的libaums库0.7.5版本在加载时出现各种错误,借助网络大神说的各种方法也没能调试成功,后来换了种实现方法,更简单,轻松解决问题。方法记录如下:

思路:获取U盘的挂载路径,直接读写U盘,读取到U盘中指定APK文件后,安装APK。

1.通过MEDIA广播获取挂载路径

首先在AndroidManifest.xml中,application下注册系统广播

然后创建MediaReceiver广播类,获取USB挂载路径

public class MediaReceiver extends BroadcastReceiver {

private final static String U_DISK_FILE_NAME = "test.apk";

@Override

public void onReceive(Context context, Intent intent) {

switch (intent.getAction()) {

case Intent.ACTION_MEDIA_CHECKING:

break;

case Intent.ACTION_MEDIA_MOUNTED:

// 获取挂载路径, 读取U盘文件

Uri uri = intent.getData();

if (uri != null) {

String filePath = uri.getPath();

File rootFile = new File(filePath);

for (File file : rootFile.listFiles()) {

// 文件列表,进行相应操作...

if(file.getName().equals(U_DISK_FILE_NAME))

{

Intent install = new Intent(Intent.ACTION_VIEW);

//设置intent的数据类型是应用程序application

install.setDataAndType(Uri.parse("file://" + file.toString()),"application/vnd.android.package-archive");

//为这个新apk开启一个新的activity栈

install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(install);

break;

}

}

}

break;

case Intent.ACTION_MEDIA_EJECT:

break;

case Intent.ACTION_MEDIA_UNMOUNTED:

break;

}

}

}

以上代码轻松实现安装U盘中APK的功能。

android发现u盘自动安装apk,安卓自动识别U盘中APK文件并进行安装操作相关推荐

  1. android手机 u盘 启动不起来,安卓手机不识别U盘、不能连接PC的处理方法

    一.安卓手机不识别u盘 手机外接优盘,就是OTG功能,OTG功能就是On-The-Go的英文缩写,字面上可以理解为"安上即可用".而作为无线通讯设备或是移动设备的一项拓展功能,其实 ...

  2. Android插u盘自动执行,android tv box ---- 插入u盘直接播放指定文件夹中的视频

    android tv box ---- 插入u盘直接播放指定文件夹中的视频思路: 1.监听u盘插入广播 2.遍历指定目录下的所有文件,找到视频文件 3.将符合条件的文件加入播放集合中 4.循环播放 n ...

  3. android发现方向,这次方向对了 安卓11发现无线方向充电代码

    2月20日,xda发现在安卓11开发者预览版中有关于"无线方向充电"的代码.无线反向充电首次出现在华为Mate系列手机上,可以通过手机无线充电装置为其他支持Qi无线充电设备充电,例 ...

  4. linux中iso文件怎么安装系统文件,我有linux的iso文件,要怎么安装系统

    用虚拟光驱或 RAR 打开你下载的镜像安装文件,将:"isolinux"目录 中的 vmlinuz 和 initrd.img 两个文件拷到 C 盘(你当前系统的安装盘)里,具体是 ...

  5. 微PE安装系统 不显示U盘中镜像文件 的解决方法

    问题 首先把微PE安装到U盘,再复制win10的iso镜像到U盘,但是重启电脑进入PE中却不显示刚才的iso镜像文件. 安装 选择UltraISO刻录这个方案 ​ 下面虽然选了格式化为NTFS,但是不 ...

  6. 计算机无法验证驱动程序需要,Windows 无法验证此设备所需的驱动程序的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。(代码52)...

    由未签名驱动导致的键鼠装无法使用的问题 usb 问题失效. 要是win 10的话  导致的结果就是 无线键鼠套装无法使用. 解决办法是 1.按下shift 按键 点击重启按钮 重启后 2.疑难解答-- ...

  7. Windows 无法验证此设备所需的驱动程序的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。 (代码 52)

    在学习linux课程的时候,要下载一个dnw串口工具,但是在第一次下载的时候,提示没有第三方签名(大致就是这个意思,反正windows系统不让下),之后在网页上搜索解决办法,其一就是在设置中,找到更新 ...

  8. secoclient报错接收返回码超时,Windows 无法验证此设备所需的驱动程序的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。

    (错误代码:52) 华为secoclient由于签名问题VPN连接不上,SVN Adapter V1.0驱动标黄色感叹号. 以下直接替换驱动文件的方式可以一劳永逸的解决此问题: 链接:https:// ...

  9. Discuz论坛添加一行即可保留安装插件和模板里面的xml文件 可以无限制安装了

    请首先打开 config/config_global.php 文件, 在文件结尾添加以下代码开启插件设计者模式.$_config['plugindeveloper'] = 1;

  10. 手机文件由百度网盘自动备份的设置

    作者:flflag  时间:20210726 手机端文件可由百度网盘自动备份,但是备份的文件凌乱不堪,且有很多重复.究其原因,是我们在设置自动备份时,没有了解百度网盘自动备份的逻辑,一些应用如微信在更 ...

最新文章

  1. 10 年 IT 老兵给新人程序员的几点建议
  2. Silverlight专题(WatermarkedTextBox使用)--摘录 很受用
  3. AppLaunchScreen/Screenshot(启动图/屏幕快照)输出规范
  4. arm el2与el3_ARMv8的学习笔记
  5. 简单的并发测试工具 ab.exe ab.zip可下载 -摘自网络
  6. a=10a=0C语言,C语言基础练习题(含答案)
  7. Swift面向对象基础(上)——Swift中的类和结构体(下)
  8. Qt学习之路(9):深入了解信号槽
  9. 回归素材(part8)--python机器学习算法
  10. CRMEB知识付费系统v1.4.4源码
  11. 黑苹果系统补丁 MacOS Unlocker for VMware 3.0 下载和解锁安装macOS X 10.14图文教程
  12. C语言实现入门级小游戏——扫雷(排行榜+玩家自定义难度+递归展开一片+标记地雷)版本
  13. linux qt编译器设置,Qt使用教程:添加编译器(一)
  14. Electron构建魔兽世界插件更新安装
  15. 数据的逻辑结构包括那些?
  16. 单幅散焦图像的深度恢复
  17. 转torchscript报错:Expected a value of type ‘Tensor (inferred)‘ for argument ‘scale‘ but instead found t
  18. C++ 并发编程(从C++11到C++17)
  19. 恒压板框过滤实验数据处理_沈阳板框滤布用途,板式过滤器,详情了解
  20. 威步百科 | Blurry Box

热门文章

  1. 计算机教程无线路由器桥接上网,两个路由器无线桥接
  2. 计算机云什么不同步,微云同步盘和腾讯微云的区别!微云只上传不同步-太平洋电脑网...
  3. 种草电商系统种草电商系统开发解决方案
  4. 【Uly】团队&团队博客成立典礼~~
  5. linux ps 主进程,Linux ps 查看进程
  6. yuemiao-开发(一)
  7. 基于MThings完成MODBUS设备在线状态扫描
  8. spring cloud day(6) gateway网关
  9. 星空特效HTML代码,HTML5特效库 HTML5+JS全屏星空特效源码
  10. 1s看懂555定时器,以及应用?