1.调用方法:

private String setSDOTGEnable(boolean enable) {if (enable)mDPM.clearUserRestriction(admin, UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA);elsemDPM.addUserRestriction(admin, UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA);
}

2.在【mt67xx_11.0】上调用以上方法并不能控制到ES文件浏览器识别SD卡,增加以下控制:

--- a/alps/frameworks/base/services/usb/java/com/android/server/usb/UsbHostManager.java
+++ b/alps/frameworks/base/services/usb/java/com/android/server/usb/UsbHostManager.java
@@ -50,6 +50,10 @@ import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.LinkedList;
+//add for setSDOTGEnable
+import android.os.UserHandle;
+import android.os.UserManager;
+//add end/*** UsbHostManager manages USB state in host mode.
@@ -353,6 +357,13 @@ public class UsbHostManager {@SuppressWarnings("unused")private boolean usbDeviceAdded(String deviceAddress, int deviceClass, int deviceSubclass,byte[] descriptors) {
+        //add by lfy for setSDOTGEnable
+        UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+        boolean flag = um.hasUserRestriction(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,UserHandle.of(um.getUserHandle()));
+        if (flag) {
+            return false;
+        }
+        //add endif (DEBUG) {

以上方法实现的启用/禁用otg功能在使用过程中需要在调接口前先插拔otg设备,完善缺陷修改如下:
1.在禁用前先unmount已挂载的设备&在启用后mount已插入的设备,顺序不能乱

if(!enable){unmountSD(!enable);   //禁用前先unmount已挂载的设备mDPM.addUserRestriction(admin, UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA);
}else{mDPM.clearUserRestriction(admin, UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA);unmountSD(!enable);  //在启用后mount已插入的设备
}private void unmountSD(boolean disabled) {try {   //一定要有try...catchandroid.util.Log.d("lfy","mountUnmountSD......");StorageManager mStorageManager = mContext.getSystemService(StorageManager.class);StorageVolume[] volumeList = mStorageManager.getVolumeList();if (volumeList.length > 0) {for (StorageVolume vol : volumeList) {android.util.Log.d(TAG," mountUnmountSD...vol="+vol+",getId="+vol.getId()+",path="+vol.getPath()+",InternalPath="+vol.getInternalPath()+",filePath="+vol.getPathFile().getPath()+",getDescription="+vol.getDescription(mContext));if (disabled) {if (!"/storage/emulated/0".equals(vol.getPath()) && "mounted".equals(vol.getState())) {mStorageManager.unmount(vol.getId());}}else{if (!"/storage/emulated/0".equals(vol.getPath()) && "unmounted".equals(vol.getState())) {mStorageManager.mount(vol.getId());}}}}} catch(Exception e){android.util.Log.d("lfy","[FuncTools] mountUnmountSD...e="+e);e.printStackTrace();}
}

2.打印log

3.如果unmountSD顺序调用错误(统一在enable判断前调用会报如下错误)

4.报错信息具体出处:

//frameworks/base/services/core/java/com/android/server/StorageManagerService.java
@Overridepublic void mount(String volId) {enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);final VolumeInfo vol = findVolumeByIdOrThrow(volId);if (isMountDisallowed(vol)) {   //决定存储是否能挂载的关键throw new SecurityException("Mounting " + volId + " restricted by policy");}mount(vol);}/*** Decide if volume is mountable per device policies.*/
private boolean isMountDisallowed(VolumeInfo vol) {UserManager userManager = mContext.getSystemService(UserManager.class);boolean isUsbRestricted = false;if (vol.disk != null && vol.disk.isUsb()) {isUsbRestricted = userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER,Binder.getCallingUserHandle());}boolean isTypeRestricted = false;if (vol.type == VolumeInfo.TYPE_PUBLIC || vol.type == VolumeInfo.TYPE_PRIVATE|| vol.type == VolumeInfo.TYPE_STUB) {isTypeRestricted = userManager.hasUserRestriction(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,Binder.getCallingUserHandle());}return isUsbRestricted || isTypeRestricted;
}

Android 启用/禁用通过otg连接T卡功能相关推荐

  1. Android 启用/禁用蓝牙传输文件功能(不能影响蓝牙耳机听歌)

    修改记录[mt67xx_11.0] 1.启用/禁用蓝牙分享功能 private String setBtEnalbe(boolean enable) {if (enable)mDPM.clearUse ...

  2. Android baidu地图定位实现签到打卡功能(附源码)

    导语 本章根据baidu地图API,实现打卡功能.用到了基础地图.覆盖物.定位图层.陀螺仪方法.悬浮信息弹框. (这里原创!!!转载请表明我的原文地址~) baidu地图API地址  :Android ...

  3. Android自定义实现按周签到打卡功能

    之前实现过<Android可签到的日历控件>的功能,跟这篇一样都是实现签到打卡功能,这篇实现的是按月进行打卡做标识,本篇内容实现的按周进行签到打卡. 实现签到规则如下: 1.连续签到7天, ...

  4. Android 启用/禁用WLAN直连功能

    修改记录[mt67xx_11.0] --- a/alps/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/s ...

  5. android 嵌套h5百度地图实现打卡功能

    简介 项目过程中因需要做一个类似打卡的应用,先将之前写过的demo跟大家一起分享一下,主要是介绍如何使用android的webview嵌套H5实现简单的定位功能,H5页面设计html 以及javasc ...

  6. android otg连接单反

    最近有个功能,otg连接单反,在github上找到了一个大神的代码,佳能相机使用是正常的,但是尼康一直有问题.nikoncheckcommond中一直检测不到拍照后addobject事件,有没有哪位大 ...

  7. Vmware提示:host usb device connections disabled-(vmware 主机已禁用 usb 设备连接)

    Vmware提示:host usb device connections disabled-(vmware 主机已禁用 usb 设备连接) VMware Workstation,提示提示Host US ...

  8. win10 远程桌面卡顿_Win10系统远程桌面连接缓慢卡顿解决措施

    远程桌面连接可以让我们更好的操控其他电脑,但是在使用过程中难免会遇到这样或那样的问题,而在win10系统中出现的问题也是层出不穷,有用户在win10下启用远程连接电脑窗口变得缓慢卡顿,出现这种现象主要 ...

  9. android 关闭jack_编译Android时禁用Jack Server

    编译Android时禁用Jack Server 2017-07-24 15:29:43 +08 字数:818 标签: Android 本文的代码与方法,基于Android O(8.0). 简介 ¶ J ...

最新文章

  1. sqlplus set;命令
  2. python快速编程入门课后简答题答案-Python编程:从入门到实践(课后习题8)
  3. Tkinter Helloword !
  4. [.NET Core].NET Core R2安装及示例教程
  5. 使用jquery图表插件jqplot之折线图
  6. win7电脑上的文件打开方式选错了怎么办
  7. Android开发在路上:少去踩坑,多走捷径
  8. 上传身份证照片js_国际快递为什么需要上传身份证,怎么上传?
  9. 二. 音频系统 Audio Systems
  10. 关于Location of the Android SDK has not been setup in the preferences的解决方法
  11. Win7使用之查端口,杀进程
  12. 1Password 7:Mac的密码管理工具
  13. sap未分摊差异怎么处理_聊一聊,临时外包员工差异化薪酬要怎么处理
  14. 【Java】实现wav格式音乐的 播放、停止、循环播放、音量调节
  15. 怎么使用黑鲨U盘启动制作U盘系统?
  16. linux 版本号 笔记本_2019 年最佳 Linux 笔记本电脑发行版 top10
  17. docker 设备共享
  18. db2iupgrade失败:DBI1205E One or more local databases cannot be upgraded
  19. 大一Web课程设计 基于HTML家乡主题网页项目的设计与实现——中国牡丹之都山东菏泽(6页)
  20. cropper.js 裁剪图片并上传(文档翻译+demo)(转)

热门文章

  1. 少说话多写代码之Python学习017——字典的方法(items、pop)
  2. JAVA反色计算方法的改进和修正
  3. 假设一个类,继承了父类并且实现了一个接口,然后父类和接口有一个同名的方法,那么此时会发生什么情况,编译会提示出错吗?如果不出错,那么这到底算是重写还是实现接口方法?
  4. java中dao是什么意思
  5. 虚拟服务器 vmotion,VMotion简单步骤
  6. VS2017中英文切换设置
  7. org.dom4j.DocumentException: Error on line 1 of document : Content is not allowed in prolog. Nested
  8. 【JavaScript】DOM和事件简介和文档加载流程以及DOM查询(上)案例(附源码)
  9. html不同板块点击切换,板块快速切换的操作策略
  10. 乐讯机器人精简版2016迎春版【隆重发布】