当前位置: 首页 > article >正文

android user版本默认usb模式为充电模式

android插入usb时会切换至默认设置的模式,debug版本为adb,user版本为mtp

        protected long getChargingFunctions() {
            // if ADB is enabled, reset functions to ADB
            // else enable MTP as usual.
            if (isAdbEnabled()) {
                return UsbManager.FUNCTION_ADB;
            } else {
                return UsbManager.FUNCTION_MTP;
            }
        }

一般客户会需要user和debug版本的状态保持一致,即同时为mtp或者同时为充电(none)。
默认为mtp模式网上资源很多,不作赘述。
默认为充电模式如果按照同样的方式修改后,虽然插入usb后确实不会弹出mtp,但是在设置中-连接的设备将无法显示usb切换选项。
本文通过mtpservice的角度,将默认usb模式设置为充电时可以在设置中正常显示usb切换菜单。

项目makefile添加区分属性
+ifeq ($(TARGET_BUILD_VARIANT),user)
+PRODUCT_SYSTEM_PROPERTIES += ro.usb.default_mtp=false
+endif
Index: packages/services/Mtp/src/com/android/mtp/MtpReceiver.java
===================================================================
--- packages/services/Mtp/src/com/android/mtp/MtpReceiver.java	(版本 535)
+++ packages/services/Mtp/src/com/android/mtp/MtpReceiver.java	(版本 536)
@@ -23,6 +23,7 @@
 import android.content.IntentFilter;
 import android.hardware.usb.UsbManager;
 import android.os.Bundle;
+import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.util.Log;
 
@@ -71,6 +72,10 @@
         if (configured && (mtpEnabled || ptpEnabled)) {
             if (!isCurrentUser)
                 return;
+            if (!unlocked && !SystemProperties.getBoolean("ro.usb.default_mtp", true))
+                return;
             intent = new Intent(context, MtpService.class);
             intent.putExtra(UsbManager.USB_DATA_UNLOCKED, unlocked);
             if (ptpEnabled) {

如果没有实际进入存储模式,则不进入mtp模式。


http://www.kler.cn/a/416271.html

相关文章:

  • C++趣味编程:基于树莓派Pico的模拟沙漏-倾斜开关与LED的互动实现
  • 深入理解 AI 产品的核心价值——《AI产品经理手册》
  • golang通用后台管理系统11(代码生成工具01)
  • 40分钟学 Go 语言高并发:【实战课程】工作池(Worker Pool)实现
  • hhdb数据库介绍(10-13)
  • 【Python-Open3D学习笔记】004Mesh生成方法
  • windows安全中心,永久卸载工具分享
  • (超详细图文)PLSQL Developer 配置连接远程 Oracle 服务
  • 前端安全防护教程
  • 05—如何设计和仿真阻抗匹配网络
  • MySQL之创建和管理表
  • postman使用正则表达式提取数据实战篇!
  • 深度学习之 SegNet
  • 手搓一个不用中间件的分表策略
  • 数据库——索引覆盖(Covering Index)
  • 量子蚁群算法复现
  • 云轴科技ZStack助力 “上科大智慧校园信创云平台”入选上海市2024年优秀信创解决方案
  • layui table 纵向滚动条导致单元格表头表体错位问题
  • 【数据结构】填空集
  • 自动类型和推导(aotu和decltype)