通过编程实现从安卓手机到电脑的USB文件传输

11
我正在寻找一种解决方案,利用Android API通过USB线将文本文件从Android设备传输到计算机。我已经找到了USB host,但由于计算机无法作为Android主机的设备使用,因此我无法使用它。
你有什么建议可以帮助我实现这个功能吗?

1
你想要以编程方式完成这个任务吗?还是只需要插入设备并拖放文件即可? - FoxMulder900
1
我明白了,如果没有在客户端机器上安装应用程序,这可能是不可能的,否则这可能会带来很大的安全风险。 - FoxMulder900
1
@323go 这也是一个选择,但如果我在PC上实现一个应用程序,我不能使用adb,因为计算机没有安装Android SDK。除了adb之外还有其他选项吗? - niculare
1
@323go 如果我在PC上使用Java进行应用程序开发,那么我需要将adb.exe打包到jar文件中,并在第一次运行jar文件时提取它,以便能够使用它? - niculare
@niculare你成功了吗?因为我也想这样做 :) - Juned
显示剩余5条评论
3个回答

6

我通过使用adb status-window持续检查设备状态来解决了这个问题,当新的设备连接时,使用adb pull命令将所需文件传输到计算机。

为了实现便携式解决方案(即独立于Android平台运行),我只需将文件'adb.exe'和'AdbWinApi.dll'复制到我的应用程序中,并从那里使用adb。


2
复制了 adb.exeAdbWinApi.dll 文件后,我应该做什么? 运行这个命令 Runtime.getRuntime().exec("adb -s pull /sdcard/juned.jpg /root/juned/android_usb/"); 就可以了吗?还是我需要做别的什么? - Juned

2
我曾经遇到过类似的问题,需要在电脑上安装的软件能够通过USB访问安卓手机中的文件。在长时间的研究之后,我找到了解决方法(不确定这是否是最佳解决方案,但它确实有效)。Windows拥有Windows Portable Device(WPD)API,可以通过USB枚举设备的内容(并在客户端和设备之间复制文件)。

Java中有一些实现: http://code.google.com/p/jmtp/ (效果很好,但不支持从设备复制文件到电脑,尽管有一些可用于此目的的支持源代码) 另一个是jusbpmp(可在Google存储库中找到) (如果有人发现有文档良好且维护良好的实现,请分享)

但由于jmtp对我无效(复制功能源代码编译(64位操作系统)失败),我从头开始编写了C#程序,将文件从设备复制到PC。这里有一个不错的教程 https://github.com/geersch/WPD/blob/master/src/part-3/README.md


@ChristopheGeers - 你的回答有些过时了,但我想确认一下是否有人已经构建了任何可以直接从安卓手机通过我的Windows 10电脑传输文件到大容量存储设备的工具。非常感谢您的帮助! - mountainclimber11

0
你可以编写一个应用程序,使用http协议联系你的电脑,并向已知的端点发送(POST)数据。
请记住,该应用程序只能访问属于该应用程序的数据。你将无法从文件系统中访问任意文件。

1
问题在于我不能依赖无线网络连接。唯一能依赖的是USB电缆。 - niculare
2
同样的问题...我需要通过USB连接到Windows PC上的数据库。 - Zonata

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接