【问题标题】:Run adb pull and push command from inside an application programmatically以编程方式从应用程序内部运行 adb pull 和 push 命令
【发布时间】:2013-09-14 12:59:01
【问题描述】:

我正在开发一个应用程序,我必须使用 USB 从计算机(即 Windows 系统)中放置和获取一些文件。

我搜索了网络,但没有得到任何有用的信息。我对命令行有一个想法,所以我可以通过使用像

这样的命令来做到这一点

./adb -s emulator-5554 pull /sdcard/juned.jpg c:/user/juned/images/

它将juned.jpg文件复制到系统的指定目录中,但是是否可以通过编程方式运行相同的命令?

到目前为止,我在 Android Samples 中获得了一个名为 AdbTest 的示例应用程序,该示例应用程序位于 /root/android-sdks/samples/android-18/legacy/USB/ 目录下,我尝试编译该应用程序但它没有显示任何内容。

xml 目录下的那个应用程序中device_filter.xml 文件在那里。在那个文件中

<resources>
    <usb-device class="255" subclass="66" protocol="1" />
</resources>

我应该提供什么价值才能使其与我的设备一起使用?

是否可以通过编程方式从应用程序内部运行adb 命令?

编辑

目前我才知道,adb命令不能在非root设备上执行,那么有没有其他方法可以使用USB传输文件?

【问题讨论】:

  • 您可能需要 root 访问权限才能从您的应用中执行此操作
  • @Metalhead1247 有没有针对无根设备的解决方案?
  • 这与root无关。相反,问题是您需要在 PC 上安装某种文件服务器,以便根据设备的请求以某种方式使文件可用。 adb 不提供该功能 - 它只接受来自 PC 端的请求。

标签: android usb adb file-transfer


【解决方案1】:

对于没有root的设备是不可能的

因为要运行你的命令,它需要 Su 权限(超级用户)。

您的命令将是 system/bin/ Su / -command

非root设备无权访问system/bin/su

您可以通过安装 Superuser.apk 来根您的模拟器

或试试How to get root access on Android emulator?

【讨论】:

  • 不,它与 root 无关,而是 adb push/pull 命令必须从 PC 发出,而不是从 Android 设备发出。您将此与其他各种 shell 命令和操作混淆了,这些命令和操作允许 adbd 的“shell”(或模拟器“root”)用户 ID,而不是应用程序。但是push和pull并不是shell命令运行via adb,而是开发系统adb命令
猜你喜欢
  • 1970-01-01
  • 2012-04-25
  • 2016-03-24
  • 2014-06-08
  • 2016-12-08
  • 2011-02-06
  • 2015-05-01
  • 2019-03-11
  • 1970-01-01
相关资源
最近更新 更多