本文转载自:https://blog.csdn.net/phoebe_2012/article/details/47025309

用代码实现断开Android手机USB连接

       
        用代码 实现了一个小功能:断开android手机USB连接。
        
  1. <span style="white-space:pre">    </span>// 尝试断开USB连接
  2. boolean disconnectUSB() {
  3. String state = "none";// 禁用所有usb
  4. //String state = "adb";// 仅使用adb
  5. //String state = "mtp,adb";// 使用mtp与adb
  6. SystemProperties.set("sys.usb.config", state);
  7. // wait for the transition to complete.
  8. // give up after 1 second.
  9. for (int i = 0; i < 20; i++) {
  10. // State transition is done when sys.usb.state is set to the new configuration
  11. if (state.equals(SystemProperties.get("sys.usb.state"))) return true;
  12. SystemClock.sleep(50);
  13. }
  14. return false;
  15. }

也可通过反射机制进行调用,但其实最终实际执行的还是上面的代码。

    1. try {
    2. final int MSG_SET_CURRENT_FUNCTIONS = 2;
    3. IBinder usb_service = ServiceManager.getService(Context.USB_SERVICE);
    4. Class<?> c_UsbService = Helpers.findClass("com.android.server.usb.UsbService");
    5. Field f_mDeviceManager = Helpers.findField(c_UsbService, "mDeviceManager");
    6. Object o_mDeviceManager = f_mDeviceManager.get(usb_service);
    7. Class<?> c_UsbDeviceManager = Helpers.findClass("com.android.server.usb.UsbDeviceManager");
    8. Field f_mHandler = Helpers.findField(c_UsbDeviceManager, "mHandler");
    9. Object o_mHandler = f_mHandler.get(o_mDeviceManager);
    10. Handler h_mHandler = (Handler) o_mHandler;
    11. // 禁用adb
    12. Field f_mAdbEnabled = Helpers.findField(c_UsbDeviceManager, "mAdbEnabled");
    13. f_mAdbEnabled.setBoolean(o_mDeviceManager, false);
    14. // 不提供USB服务
    15. Message msg = Message.obtain(h_mHandler, MSG_SET_CURRENT_FUNCTIONS);
    16. msg.obj = new String("none");
    17. msg.arg1 = 0;
    18. h_mHandler.removeMessages(MSG_SET_CURRENT_FUNCTIONS);
    19. h_mHandler.sendMessage(msg);
    20. Log.d("test", "[End]try disconnect USB");
    21. return true;
    22. } catch (Throwable e) {
    23. e.printStackTrace();
    24. Log.e("test", "[disconnectUSB][Throwable]" + e.getMessage());
    25. }
    26. return false;

用代码实现断开Android手机USB连接【转】的更多相关文章

  1. 小米2及其他Android手机无法连接mac解决方案

    一般的android连接mac 很方便不用安装驱动就可以啦,可是不知道为什么二般情况下有的android手机(小米2,华为等)就是连接不上,下来就说说二般情况下如何连接. 1.关于本机-->更多 ...

  2. Android studio USB连接失败

    Android studio USB连接失败,可能是因为adb的端口被占了,此时在其自带的cmd中输入netstat -aon|findstr "5037",并且启动任务管理器关掉 ...

  3. [转]Mac OS X 下部分Android手机无法连接adb问题之解决方案

    时至当今,Android山寨手机厂商已如此之多,能修改和个性化定制Android OS的能人已是多如牛毛,有的牛人修改Android系统只会影响所修改的点,不会影响其它,然后还有的就不多说了,总之做的 ...

  4. Android手机USB调试安全闲扯(315晚会免费充电桩事件)

    前言       今年的又准时乖巧的观看了315晚会,与大家一同学习了各种发财致富的方式...咳.咳..学习防范违法行骗的各种手段.比较感兴趣的两个,一人脸识别,二公共充电桩安全隐患.第一个今天不扯, ...

  5. Mac OS X 下部分Android手机无法连接adb问题之解决方案

    [原文]  时至当今,Android山寨手机厂商已如此之多,能修改和个性化定制Android OS的能人已是多如牛毛,有的牛人修改Android系统只会影响所修改的点,不会影响其它,然后还有的就不多说 ...

  6. 如何能够通过代码来重启Android手机?

    String cmd = "su -c reboot";//让手机从启 try { Runtime.getRuntime().exec(cmd); } catch (IOExcep ...

  7. Android手机刷机失败的自救方法

    刷机对于一些android手机的高级用户来说已经是家常便饭了,很多新手也都跟着教程轻松了学会刷机.升级系统,也都开始经常在网上搜罗一些自制的系统进行刷机,体验新系统带来的新感觉.但是有句古话叫常在河边 ...

  8. [转]设置Android手机以使用ARM Streamline进行性能分析(一)

    本博客第一次转载的文章,原文访问不到了,这篇是从google cache里挖出来的,为有需要的同学准备.原文地址     Posted by Fang Bao,(鲍方) 4 Comments 11 J ...

  9. 三星 S4 手机误删除相片(相册)后的恢复问题,仅记录处理过程,其它Android手机同样适用

    无意中删除了三星S4手机中相机的相册.过程是这样的,用手机拍了几张照片,觉得最后那张拍得不好,想删除,于是进入相册,看到有那张照片的图标,选择,删除,悲剧发生了! 这里得说三星的不好:在相册中,相册文 ...

随机推荐

  1. 黑马day11 事务的四大特性

    1.事务的四大特性:一个事务具有的最主要的特性.一个设计良好的数据库能够为我们保证这四大特性. 1.1原子性:原子性是指事务是一个不可切割的工作单位,事务中的操作要么都发生要么都不发生. 1.2一致性 ...

  2. chrome 设置代理服务器

    通过设置google chrome浏览器的代理服务器可以让google chrome浏览器通过代理服务器上网,可以隐藏本机的IP地址或者访问一些不能直接访问的网站. 工具/原料   google ch ...

  3. 发现保存GIF格式后相素发生变化咋办

    数学公式编辑器MathType主要的作用就是编辑公式用的,一些用户朋友编辑完公式希望把公式保存为“高分辨率”的GIF格式,但是在图片查看器中进行浏览查看时发现GIF的分辨率发生了变化,对于这种情况该如 ...

  4. 那些可爱的 Linux 命令

    环境 root@15b883:~# uname -a ##需要是Ubuntu环境 Linux 15b883 --generic #- :: UTC x86_64 x86_64 x86_64 GNU/L ...

  5. C#中的Form,textBox,Bitmap,PictureBox,Button,WebBrowser

    因为今天是用的家里的电脑,用的不是retena屏的mac,因此稍后截图的时候大家看到的图片可能会有一些模糊,还请大家海涵... 兄弟们,我胡汉三又回来啦! 以下開始我们的第一个C#程序.我们之前已经通 ...

  6. git 初始化项目操作

    命令行指令 Git 全局设置 git config --global user.name "你的名称" git config --global user.email "a ...

  7. Handler classes should be static or leaks might occur

    http://droidyue.com/blog/2014/12/28/in-android-handler-classes-should-be-static-or-leaks-might-occur ...

  8. 【BZOJ2793】[Poi2012]Vouchers 调和级数

    [BZOJ2793][Poi2012]Vouchers Description 考虑正整数集合,现在有n组人依次来取数,假设第i组来了x人,他们每个取的数一定是x的倍数,并且是还剩下的最小的x个.正整 ...

  9. CAFFE学习笔记(五)用caffe跑自己的jpg数据

    1 收集自己的数据 1-1 我的训练集与测试集的来源:表情包 由于网上一幅一幅图片下载非常麻烦,所以我干脆下载了两个eif表情包.同一个表情包里的图像都有很强的相似性,因此可以当成一类图像来使用.下载 ...

  10. SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 2)

    (三)使用SPQuery进行列表查询 1.概述 列表查询主要是指在一个指定的列表(或文档库)中按照某些筛选.排序条件进行查询.列表查询主要使用SPQuery对象,以及SPList的GetItems方法 ...