默認連接電腦的模式為MTP【轉】


本文轉載自:https://blog.csdn.net/tangzhihai0421/article/details/53487208

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
個人分類: settings


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM