zoukankan      html  css  js  c++  java
  • 用代码实现断开Android手机USB连接【转】

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

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

           
            用代码 实现了一个小功能:断开android手机USB连接。
            
    [java] view plain copy
     
    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.     }  


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

    [java] view plain copy
     
      1. try {  
      2.     final int MSG_SET_CURRENT_FUNCTIONS = 2;  
      3.     IBinder usb_service = ServiceManager.getService(Context.USB_SERVICE);  
      4.       
      5.     Class<?> c_UsbService = Helpers.findClass("com.android.server.usb.UsbService");  
      6.     Field f_mDeviceManager = Helpers.findField(c_UsbService, "mDeviceManager");  
      7.     Object o_mDeviceManager = f_mDeviceManager.get(usb_service);  
      8.       
      9.     Class<?> c_UsbDeviceManager = Helpers.findClass("com.android.server.usb.UsbDeviceManager");  
      10.     Field f_mHandler = Helpers.findField(c_UsbDeviceManager, "mHandler");  
      11.     Object o_mHandler = f_mHandler.get(o_mDeviceManager);  
      12.     Handler h_mHandler = (Handler) o_mHandler;  
      13.   
      14.     // 禁用adb  
      15.     Field f_mAdbEnabled = Helpers.findField(c_UsbDeviceManager, "mAdbEnabled");  
      16.     f_mAdbEnabled.setBoolean(o_mDeviceManager, false);  
      17.       
      18.     // 不提供USB服务  
      19.     Message msg = Message.obtain(h_mHandler, MSG_SET_CURRENT_FUNCTIONS);  
      20.     msg.obj = new String("none");  
      21.     msg.arg1 = 0;  
      22.     h_mHandler.removeMessages(MSG_SET_CURRENT_FUNCTIONS);  
      23.     h_mHandler.sendMessage(msg);  
      24.       
      25.     Log.d("test", "[End]try disconnect USB");  
      26.     return true;  
      27. catch (Throwable e) {  
      28.     e.printStackTrace();  
      29.     Log.e("test", "[disconnectUSB][Throwable]" + e.getMessage());  
      30. }  
      31. return false;  
  • 相关阅读:
    JavaScript原型详解
    jQuery插件开发全解析
    再谈JavaScript闭包及应用
    狗日的Javascript中的闭包
    UML的基本图(一)
    项目开发-树形层级结构中的数量统计
    不要再坑人啦!NSOperation才是苹果推荐使用的多线程技术!
    linux下查看文件内容cat,more,less
    cocos2d-x -- 渠道SDK【棱镜】接入(2)
    关于虚拟机装kali-linux的联网问题
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/9141960.html
Copyright © 2011-2022 走看看