本文转载自: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. python3----字符串中的字符倒转

    方法一,使用[::-1]: s = 'python' print(s[::-1]) 方法二,使用reverse()方法: n = list(s) n.reverse() print(''.join(n ...

  2. python多线程爬虫:亚马逊价格

    import re import requests import threading import time from time import ctime,sleep from queue impor ...

  3. 编写自己的ls命令

    ····要编写ls命令,首先要了解它能做什么,完成了什么工作,是如何完成这些工作的····  一.ls命令能做什么? 我们在命令行输入ls,ls默认找出当前目录中所有文件的文件名,并且按照字典序排序后 ...

  4. [Spring Data MongoDB]学习笔记--MongoTemplate插入修改操作

    插入操作: 直接给个例子 import static org.springframework.data.mongodb.core.query.Criteria.where; import static ...

  5. 《从零开始学Swift》学习笔记(Day 29)——访问级别

    Swift 2.0学习笔记(Day 29)——访问级别 原创文章,欢迎转载.转载请注明:关东升的博客 访问级别: Swift提供了3种不同访问级别,对应的访问修饰符为:public.internal和 ...

  6. EasyNVR摄像机网页无插件直播使用过程中问题的自我排查-设备不在线问题的自我排查

    系列背景 由于EasyNVR的受众越来越多,时长会遇到很对类似的问题咨询,之前虽然有写过很多的博文进行技术的或者使用问题的解答,随着客户询问的增多,我发现,要想然客户了解问题和解决问题,往往引导和给一 ...

  7. 阻塞(sleep等等)区别 中断(interrupt)+ 中断的意义

    不客气地说,至少有一半人认为,线程的"中断"就是让线程停止.如果你也这么认为,那你对多线程编程还没有入门. 在java中,线程的中断(interrupt)只是改变了线程的中断状态, ...

  8. JavaScript数据结构与算法-散列练习

    散列的实现 // 散列类 - 线性探测法 function HashTable () { this.table = new Array(137); this.values = []; this.sim ...

  9. JavaScript深入理解sort()方法

    一. 基本用法 let arr1 = [3, 5, 7, 1, 8, 7, 10, 20, 19] console.log(arr1.sort()) // [1, 10, 19, 20, 3, 5, ...

  10. CSS3选择器:nth-child与:nth-of-type区别

    一.:nth-child 1.1 说明 :nth-child(n)选择器匹配属于其父元素的第N个子元素,不论元素的类型.n可以是数字.关键词或公式. 注意:如果第N个子元素与选择的元素类型不同则样式无 ...