博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
默认连接电脑的模式为MTP【转】
阅读量:6411 次
发布时间:2019-06-23

本文共 1965 字,大约阅读时间需要 6 分钟。

本文转载自:

Android L后默认的usb连接模式为“仅充电”,而且不会随用户每次的选择而记住,假如需要修改默认的usb连接模式并且需要记住用户的选择,需要修改以下一些代码:

1.需要把mk文件中的

persist.sys.usb.config=mtp

这样默认的连接模式就为MTP,但是修改此处后usb电脑手机重启后会在PC端显示两个手机储存】、

 

2.此时需要修改

packages/providers/MediaProvider/src/com/android/providers/media/MtpService.java

 
public class MtpService extends Service {
         public void onStorageStateChanged(String path, String oldState, String newState) {
             synchronized (mBinder) {
                 Log.d(TAG, "onStorageStateChanged " + path + " " + oldState + " -> " + newState);
+                if (Environment.MEDIA_MOUNTED.equals(newState)
+                        && Environment.MEDIA_MOUNTED.equals(oldState)
+                        && mVolumeMap.containsKey(path)) {
+                    Log.d(TAG, "avoid adding storage twice.");
+                    return;
+                }
                 if (Environment.MEDIA_MOUNTED.equals(newState)) {
                     volumeMountedLocked(path);
                 } else if (Environment.MEDIA_MOUNTED.equals(oldState)) {
增加以上代码,就不会在PC端显示两个手机储存

 

 

3.修改以上两处后,每当用户开机第一次是mtp模式,但是连接一次后,第二次及以后连接都会是“仅充电”模式,此时还要修改

frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java

        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case MSG_UPDATE_STATE:
                    mConnected = (msg.arg1 == 1);
                    mConfigured = (msg.arg2 == 1);
                    if (!mConnected) {
                        // When a disconnect occurs, relock access to sensitive user data
                        mUsbDataUnlocked = false;
                    }
                    if (mConnected && (isUsbShouldActived())) {
                        //setEnabledFunctions(null, false);                        
                    } else if(mConnected && isLock) {
                        setEnabledFunctions(mCurrentFunctions, false);
                        updateAdbNotification();
                    } else {
                        updateUsbNotification();
                        updateAdbNotification();
                    }
                    if (UsbManager.containsFunction(mCurrentFunctions,
                            UsbManager.USB_FUNCTION_ACCESSORY)) {
                        updateCurrentAccessory();
                    } else if ((!mConnected && !mCurrentFunctions.equals(UsbManager.USB_FUNCTION_NONE)) || mPowerDisconnected) {
                        // restore defaults when USB is disconnected
                        //setEnabledFunctions(null, false);                        
                    }

 

注释掉红色部分的代码就可以了

       
#modify by tangzhihai 20161101 form "mass_storage" to "mtp" 71
      PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \ 72
      »       persist.sys.usb.config=mtp
个人分类: 
你可能感兴趣的文章
Oxite学习之一:Oxite安装
查看>>
extjs4 panel下tools里的元素选择器
查看>>
Mac下使用Docker简单介绍
查看>>
SpringMvc Ehcache 实现缓存机制
查看>>
javascript闭包的使用
查看>>
Backbone.js 使用模板
查看>>
安装xenomai的记实
查看>>
我们为什么需要SDN?---致新人
查看>>
自制VTP实验总结
查看>>
prime_test
查看>>
用python的smtplib发送邮件python2,3都可以使用
查看>>
我在新浪微博的第1000篇,截图纪念。
查看>>
Graphx处理janusGraph数据实现
查看>>
Oracle Study之案例--重建数据库控制文件
查看>>
log4j&slf4j日志框架入门
查看>>
五子棋精髓
查看>>
记一次升级Oracle驱动引发的死锁
查看>>
php加速器eaccelerator概述
查看>>
SER2012安装和激活终端激活
查看>>
微容器:更小的,更轻便的Docker容器
查看>>