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

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.lryc.cn/news/497042.html

相关文章:

  • 常见问题QA的前端代码
  • float globalMapVIsualizationLeafSize; 的中文意思是什么
  • 基于Java Springboot诗词学习APP且微信小程序
  • CSS学习记录02
  • 6.1 innoDb逻辑存储结构和架构-简介
  • C++看懂并使用-----回调函数
  • 构建短视频矩阵生态体系开发分享
  • qt QGraphicsScale详解
  • CAD 文件 批量转为PDF或批量打印
  • Java基础面试题16:简述Servlet的体系结构
  • Web开发基础学习——理解React组件中的根节点
  • 【人工智能】探索自然语言生成(NLG):用GPT生成文本
  • 挑战用React封装100个组件【004】
  • vue elementui layout布局组件实现规则的弹性布局
  • SpringBoot Web 开发请求参数
  • python7学习笔记-循环、迭代、pass
  • LeetCode78:子集
  • Linux 安装scala
  • 重生之我在异世界学编程之C语言:深入指针篇(上)
  • linux centos7 yum命令失效
  • mac访达打开终端
  • 【MySQL 进阶之路】索引的使用
  • 网络编程相关 API 学习
  • python使用python-docx处理word
  • 【笔记2-1】ESP32:基于vscode的espidf插件的开发环境搭建
  • 集成网关 -- 新节点的开发说明
  • 【Gitlab】CICD使用minio作为分布式缓存
  • ️️耗时一周,肝了一个超丝滑的卡盒小程序
  • 网络安全审计
  • 论文:IoU Loss for 2D/3D Object Detection