本文转载自: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. ios -解决view遮挡按钮问题

    #pragma mark -解决view遮挡按钮问题 //分享按钮赋予 self 最顶部 / web按钮赋予 self 最顶部 / showBtn显示按钮 self 最顶部 / scrollviews ...

  2. 【转】Visual studio 快捷键大全

    原文:http://book.douban.com/review/4871157/ 可同时参考:http://www.cnblogs.com/TankXiao/p/3164995.html 还记得刚工 ...

  3. PHP中导出Excel,将数据以Excel形式导出

    现在,很多地方都需要导出数据,这里说一种简单的方法将数据以Excel的形式导出,方法如下: <?php date_default_timezone_set('PRC');//设置时区 /*设置h ...

  4. 位运算+引用+const+new/delete+内联函数、函数重载、函数缺省参数

    update 2014-05-17 一.位运算 应用: 1.判断某一位是否为1 2.只改变其中某一位,而保持其它位都不变 位运算操作: 1.& 按位与(双目): 将某变量中的某些位(与0位与) ...

  5. 【BZOJ2282】[Sdoi2011]消防 树形DP+双指针法+单调队列

    [BZOJ2282][Sdoi2011]消防 Description 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这 ...

  6. 字符串 转 时间戳 unix_timestamp('2018-07-01 0:0:0')

    SELECT FROM_UNIXTIME(createtime,'%Y%m%d') AS d, s.app,SUM(o.val) FROM orders o LEFT JOIN app_type s ...

  7. Selenium IDE的使用

    Selenium IDE 的作用 Selenium IDE 是Firefox 浏览器的一个插件, 它会记录你对Firefox的操作,并且可以回放它的操作. 在实际自动化测试中,不会用Selenium ...

  8. LR回放https协议脚本失败:[GENERAL_MSG_CAT_SSL_ERROR]connect to host "XXX" failed:[10054] Connection reset by peer [MsgId:MERR-27780]

    最近做一个负载均衡项目的性能测试,使用LR录制脚本协议为https协议,回放脚本时出现报错: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "XXX& ...

  9. Django 之 信号机制

    Django 之 信号机制 Django提供一种信号机制.其实就是观察者模式,又叫发布-订阅(Publish/Subscribe) . 当发生一些动作的时候,发出信号,然后监听了这个信号的函数就会执行 ...

  10. ExtJS4 给同一个formpanel不同的url

    formpanel能够这样使用,api上的样例: var panel=Ext.create('Ext.form.Panel', { title: 'Simple Form', bodyPadding: ...