需求
RK平台的Android12系统在userdebug模式下,默认是开启adb模式,开机即可以连接PC进行adb调试,部分客户有需要把默认的adb模式改为MTP模式,开机后可以默认以文件传输的方式连接PC。
实现
可以直接在Android层的UsbDeviceManager里面设置MTP模式:
具体路径是:frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java
相关补丁:
diff --git a/services/usb/java/com/android/server/usb/UsbDeviceManager.java b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
index 9626cfb1adcc..d2d7f872d7b2 100644
--- a/services/usb/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
@@ -906,7 +906,8 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
&& mScreenUnlockedFunctions != UsbManager.FUNCTION_NONE) {
setScreenUnlockedFunctions();
} else {
- setEnabledFunctions(UsbManager.FUNCTION_NONE, false);
+ //setEnabledFunctions(UsbManager.FUNCTION_NONE, false);
+ setEnabledFunctions(UsbManager.FUNCTION_MTP, true);
}
}
updateUsbFunctions();
@@ -1118,7 +1119,8 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
&& mScreenUnlockedFunctions != UsbManager.FUNCTION_NONE) {
setScreenUnlockedFunctions();
} else {
- setEnabledFunctions(UsbManager.FUNCTION_NONE, false);
+ //setEnabledFunctions(UsbManager.FUNCTION_NONE, false);
+ setEnabledFunctions(UsbManager.FUNCTION_MTP, true);
}
if (mCurrentAccessory != null) {
mUsbDeviceManager.getCurrentSettings().accessoryAttached(mCurrentAccessory);