【问题标题】:How do we toggle on MTP more easily on a Debug-Enabled Android 6.0 device?我们如何在启用调试的 Android 6.0 设备上更轻松地切换 MTP?
【发布时间】:2016-02-06 08:17:27
【问题描述】:

在 Android 6.0 中,MTP no longer works automatically

现在,通过 USB 端口连接的设备默认设置为仅充电模式。要通过 USB 连接访问设备及其内容,用户必须明确授予此类交互的权限。如果您的应用程序支持通过 USB 端口与设备进行用户交互,请考虑必须显式启用交互。

至少每次插入 USB 数据线时都需要重新授权 MTP,而且可能比那更频繁(超时?)。

启用 USB 调试后,我发现让 MTP 共享在设备上工作的唯一解决方案是:

  • 进入设置>开发者选项
  • 向下滚动到“选择 USB 配置”
  • 将该选项的值切换为 MTP 之外的任何值,例如“仅充电”(如果它现在在 MTP 上)
  • 将该选项的值切换为 MTP
  • 刷新您的 MTP 客户端(例如,在 Ubuntu 15.04 上,关闭并重新打开显示设备内容的窗口)

当您尝试使用外部存储设备上的文件时,这会加重

除了编写一个 UIAutomator“测试”来自动执行上述过程之外,是否有一种命令行方式可以让 MTP 运行?或者,有没有其他方法可以让 MTP 在没有这种准备过程的情况下工作?

【问题讨论】:

  • 甚至@CommonsWare 也问了关于 SO 的问题。 ;-)
  • @DhavalPatel 这告诉你这是一个多么烦人的问题。我最初认为这是 Marshmallow 中的一个错误。多么痛苦。

标签: android android-6.0-marshmallow


【解决方案1】:

在 Marshmallow(6.0 和 6.0.1)中,没有某种超能力是不可能的 :-(

adb shell svc usb setFunction mtp

抛出java.lang.SecurityException: Neither user 2000 nor current process has android.permission.MANAGE_USB.MANAGE_USBsignature|privileged 权限。我将其归档为issue#193062。它已进入状态 Assigned 并标记为 Defect-25596495。在 N 开发者预览版中已修复。

【讨论】:

  • 我已经在 Nexus 5X / NPC56P 上进行了测试(即 N 开发者预览版 #1)。它奏效了。
  • 在奥利奥上,拔下电缆后它会恢复。
猜你喜欢
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 2019-12-24
  • 2015-12-05
  • 1970-01-01
  • 2016-04-26
相关资源
最近更新 更多