用代码实现断开Android手机USB连接【转】
本文转载自:https://blog.csdn.net/phoebe_2012/article/details/47025309
用代码实现断开Android手机USB连接
- <span style="white-space:pre"> </span>// 尝试断开USB连接
- boolean disconnectUSB() {
- String state = "none";// 禁用所有usb
- //String state = "adb";// 仅使用adb
- //String state = "mtp,adb";// 使用mtp与adb
- SystemProperties.set("sys.usb.config", state);
- // wait for the transition to complete.
- // give up after 1 second.
- for (int i = 0; i < 20; i++) {
- // State transition is done when sys.usb.state is set to the new configuration
- if (state.equals(SystemProperties.get("sys.usb.state"))) return true;
- SystemClock.sleep(50);
- }
- return false;
- }
也可通过反射机制进行调用,但其实最终实际执行的还是上面的代码。
- try {
- final int MSG_SET_CURRENT_FUNCTIONS = 2;
- IBinder usb_service = ServiceManager.getService(Context.USB_SERVICE);
- Class<?> c_UsbService = Helpers.findClass("com.android.server.usb.UsbService");
- Field f_mDeviceManager = Helpers.findField(c_UsbService, "mDeviceManager");
- Object o_mDeviceManager = f_mDeviceManager.get(usb_service);
- Class<?> c_UsbDeviceManager = Helpers.findClass("com.android.server.usb.UsbDeviceManager");
- Field f_mHandler = Helpers.findField(c_UsbDeviceManager, "mHandler");
- Object o_mHandler = f_mHandler.get(o_mDeviceManager);
- Handler h_mHandler = (Handler) o_mHandler;
- // 禁用adb
- Field f_mAdbEnabled = Helpers.findField(c_UsbDeviceManager, "mAdbEnabled");
- f_mAdbEnabled.setBoolean(o_mDeviceManager, false);
- // 不提供USB服务
- Message msg = Message.obtain(h_mHandler, MSG_SET_CURRENT_FUNCTIONS);
- msg.obj = new String("none");
- msg.arg1 = 0;
- h_mHandler.removeMessages(MSG_SET_CURRENT_FUNCTIONS);
- h_mHandler.sendMessage(msg);
- Log.d("test", "[End]try disconnect USB");
- return true;
- } catch (Throwable e) {
- e.printStackTrace();
- Log.e("test", "[disconnectUSB][Throwable]" + e.getMessage());
- }
- return false;
用代码实现断开Android手机USB连接【转】的更多相关文章
- 小米2及其他Android手机无法连接mac解决方案
一般的android连接mac 很方便不用安装驱动就可以啦,可是不知道为什么二般情况下有的android手机(小米2,华为等)就是连接不上,下来就说说二般情况下如何连接. 1.关于本机-->更多 ...
- Android studio USB连接失败
Android studio USB连接失败,可能是因为adb的端口被占了,此时在其自带的cmd中输入netstat -aon|findstr "5037",并且启动任务管理器关掉 ...
- [转]Mac OS X 下部分Android手机无法连接adb问题之解决方案
时至当今,Android山寨手机厂商已如此之多,能修改和个性化定制Android OS的能人已是多如牛毛,有的牛人修改Android系统只会影响所修改的点,不会影响其它,然后还有的就不多说了,总之做的 ...
- Android手机USB调试安全闲扯(315晚会免费充电桩事件)
前言 今年的又准时乖巧的观看了315晚会,与大家一同学习了各种发财致富的方式...咳.咳..学习防范违法行骗的各种手段.比较感兴趣的两个,一人脸识别,二公共充电桩安全隐患.第一个今天不扯, ...
- Mac OS X 下部分Android手机无法连接adb问题之解决方案
[原文] 时至当今,Android山寨手机厂商已如此之多,能修改和个性化定制Android OS的能人已是多如牛毛,有的牛人修改Android系统只会影响所修改的点,不会影响其它,然后还有的就不多说 ...
- 如何能够通过代码来重启Android手机?
String cmd = "su -c reboot";//让手机从启 try { Runtime.getRuntime().exec(cmd); } catch (IOExcep ...
- Android手机刷机失败的自救方法
刷机对于一些android手机的高级用户来说已经是家常便饭了,很多新手也都跟着教程轻松了学会刷机.升级系统,也都开始经常在网上搜罗一些自制的系统进行刷机,体验新系统带来的新感觉.但是有句古话叫常在河边 ...
- [转]设置Android手机以使用ARM Streamline进行性能分析(一)
本博客第一次转载的文章,原文访问不到了,这篇是从google cache里挖出来的,为有需要的同学准备.原文地址 Posted by Fang Bao,(鲍方) 4 Comments 11 J ...
- 三星 S4 手机误删除相片(相册)后的恢复问题,仅记录处理过程,其它Android手机同样适用
无意中删除了三星S4手机中相机的相册.过程是这样的,用手机拍了几张照片,觉得最后那张拍得不好,想删除,于是进入相册,看到有那张照片的图标,选择,删除,悲剧发生了! 这里得说三星的不好:在相册中,相册文 ...
随机推荐
- windows共享文件夹给centOS
服务器使用的是CentOS系统,而本机使用的win7系统.考虑到是临时使用,所以就不打算搭建FTP和Samba服务器,直接通过CentOS挂载windows共享文件夹的方式来达到此目的. 既然是使用w ...
- VC++ 汇编相关的东西
Tips: VC++在新建一个.asm文件后必须重新导入project中才能进行编译. 下面是一个汇编与C++相互调用的例子: Main.cpp #include <stdio.h> #i ...
- vue之v-bind:style
<div class="collect" @click="collected=!collected"> <i class="fa f ...
- [Sdoi2011]火星移民
2283: [Sdoi2011]火星移民 Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 119 Solved: 56[Submit][Status] ...
- 【BZOJ3122】[Sdoi2013]随机数生成器 BSGS+exgcd+特判
[BZOJ3122][Sdoi2013]随机数生成器 Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b, ...
- Android实现splash
笔者近日遇到一个android中双splash的问题.要求先实现百度的logo,在接入自己的logo. public class MainActivity extends BaseActivity { ...
- cvs 文件如何解析?
QList<QStringList> RwCvs::readToList(const QString &path, const QString separator) { QList ...
- js验证表单大全1
附加:js验证radio是否选择 <script language="javascript"> function checkform(obj) { for(i=0;i& ...
- android自定义控件(二)Canvas
一.重要方法 1.translate 2.scale 3.rotate 二.注意 1.明确顺序 canvas.rotate(45); canvas.drawRect(new Rect(50, 50, ...
- dataTables.bootstrap 如何显示中文
$('#table_cust').DataTable({ "oLanguage": { "sUrl": "/assets/vendors/page_z ...