项目需要,每次插入U盘需要格式化。

刚看到这个需求的时候感觉很简单,调一行api就搞定的,事实证明还是太年轻了

android没有提供相应的api,于是百度

参考 Android格式化外部设备如USB等_AZZ的博客-CSDN博客

按照一贯的风格,直接CV大法,兴高采烈的发现行不通,有些类在android高版本都没了,这篇博客是基于android5.0,这会儿在我这用不成。

后来翻了很久,发现了StorageManager这个关键的类。

这个类在/frameworks/base/core/java/android/os/storage/StorageManager.java下,

StorageManager是Android SDK中管理存储设备的一个类。其中的存储设备分内部存储和外部存储,外部存储可以有SDCard、U盘等其他挂载的外设。

还有StorageVolume类
StorageVolume代表的是一个设备信息的数据结构,里面包含了名称、路径、挂载状态等等信息。

StorageManager中我找到了两个方法

移除U盘:

 格式化U盘:

这两个方法没有任何说明,并且是hide标签,意味着得用反射。还有参数volid我一度不知道是啥玩意儿。

尝试以后,通过传入StorageVolume.getid(usb的id),成功

下面附上代码:

   // 获取 StorageVolume 对象public void getStoragePath(Context mContext) {mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);Class<?> storageVolumeClazz = null;try {storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");//暂且称之为获取usb列表Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");//拿到format方法Method format = mStorageManager.getClass().getMethod("format", String.class);//拿到StorageVolume 的getpath方法Method getPath = storageVolumeClazz.getMethod("getPath");//拿到StorageVolume 的getId方法Method getId = storageVolumeClazz.getMethod("getId");Method isRemovable = storageVolumeClazz.getMethod("isRemovable");Object result = getVolumeList.invoke(mStorageManager);final int length = Array.getLength(result);//遍历列表for (int i = 0; i < length; i++) {Object storageVolumeElement = Array.get(result, i);String path = (String) getPath.invoke(storageVolumeElement);boolean removable = (Boolean) isRemovable.invoke(storageVolumeElement);//如果当前的usb地址和我们定义的地址一样的话,就操作它if (removable && path.equals(mPreferUsbPath)) {String id = (String) getId.invoke(storageVolumeElement);//格式化它!!format.invoke(mStorageManager, id);}}} catch (Exception e) {e.printStackTrace();}}

以上,格式化USB算是完成了。

顺便还解决了移除USB功能,刚好是下周要做的功能,开心!!!

android 格式化USB 和移除USB(U盘)相关推荐

  1. Android 系统(67)---android apk 的root 权限和USB adb 权限的区别

    android apk 的root 权限和USB adb 权限的区别 USB adb 权限是指,当adb 连接手机时,手机中的守护进程adbd 的权限为root 权限,从而它的子进程也具有root 权 ...

  2. android usb多个,android、windows上多个USB Camera同时使用实验小结

    android.windows上多个USB Camera同时使用实验小结 (2013-05-18 19:19:46) 标签: 小结 实验 使用 杂谈 android.windows上多个USB Cam ...

  3. Android 系统使用USB OTG功能/打开USB Host API功能

    步骤一:确定 Android 设备是否支持 USB Host 功能,具体可以通过以下步骤进行确认: 1. 查看手机或平板设备参数,或者直接联系厂家咨询: 2. 使用 UsbHostDiagnostic ...

  4. android外接usb摄像头demo_手机USB接口有哪些功能 手机USB接口功能介绍【详解】

    手机身上的USB接口主要的任务就是充电,连接PC传输数据,你还能想到其他的功能吗?没错,它还能连接USB小风扇.小台灯等外设.但是,你以为所有手机在实现这些功能时的体验和效果都是一样的吗? 充电速度和 ...

  5. Android 硬件通讯之 蓝牙,USB,WIFI(一.蓝牙)

    蓝牙 蓝牙通讯分为:经典蓝牙与低功耗蓝牙 现在所说的蓝牙设备,大部分都是在说4.0设备,ble也特指4.0设备. 在4.0之前重要的版本有2.1版本-基本速率/增强数据率(BR/EDR)和3.0 高速 ...

  6. Android无法自动创建USB打印机节点/dev/usb/lp0【转】

    本文转载自:http://blog.csdn.net/u013686019/article/details/50165059 [html]  view plain  copy Android: 4.4 ...

  7. Android通过cat /sys/kernel/debug/usb/devices获取USB信息

    cat /sys/kernel/debug/usb/devices得到的信息如下 下图是我们产品USB 拓扑图 USB设备通过debugfs导出/sys/kernel/debug/usb/device ...

  8. WCDMALTE Linux移远USB驱动程序用户指南(WCDMA/LTE Standard/Automotive/LTE-A Module Series)

    介绍 本文档介绍如何在Linux操作系统中集成用于Quectel模块的USB驱动程序,以及如何成功加载USB驱动程序后使用模块. 适用产品 本文件适用于以下Quectel模块. 表1:适用产品 产品概 ...

  9. Android系统adb shell端禁用USB功能

    使用ADB工具调试时,可使用adb shell命令来禁用USB的相关功能 如果只想关闭USB调试功能,可以: setprop persist.sys.usb.config mtp 如果只想关闭USB文 ...

最新文章

  1. 我是买家的前世今生,该到了say goodbye的时候了!
  2. Linux的常用的命令
  3. javase基础socket编程之局域网聊天,局域网文件共享
  4. c语言和plc编程,PLC编程C语言.ppt
  5. OpenCV3学习(2.1)——图像Mat数据的访问-at/ptr/iterator
  6. 中移4G模块-ML302-OpenCpu开发-HTTP
  7. java对象引用传递和值传递的一些总结
  8. 读书笔记2014第10本:《设计心理学》
  9. leetcode - Anagrams
  10. 推荐几个我珍藏的公众号~超级无敌!
  11. iptables 学习笔记 一 要领入门
  12. MyBatis解析<if>动态sql时,Integer类型值为0,返回false
  13. 恒流源差分放大电路静态分析_第11讲 差分放大电路_清华大学:模拟电子技术基础(华成英)_ppt_大学课件预览_高等教育资讯网...
  14. 优雅的监听软键盘隐藏
  15. PMP考试心得分享(已通过)
  16. 服创实战——小微企业跨组织人才管理系统
  17. 壁纸小程序云开发+无限裂变+附安装视频教程
  18. 移动应用开发--实现QQ登录界面(Android)
  19. 实验二 使用UML进行对ATM系统建模
  20. 新的打卡地诞生!三星家电出没网红咖啡厅

热门文章

  1. unity客户端开源框架
  2. 深度学习的线性代数基础
  3. Web服务器软件,severlet
  4. 哪款键盘最适合写代码?入坑指南!
  5. python职场应用英语作文_作文范文之职场心得英语作文
  6. 儒竞科技创业板IPO过会:拟募资9.8亿 海尔是重要客户
  7. [深度学习工具]基于PyTorch的NLP框架Flair
  8. 树莓派4B连接蓝牙音响后,播放音频不出声
  9. Django中os.environ.setdefault(DJANGO_SETTINGS_MODULE, xxxx.settings)
  10. 支付宝集五福!新玩法竟然可以不用还花呗!